如何优雅的搞垮服务器
|
如上图所示,如果不进行预热,那么Redis初识状态数据为空,系统上线初期,对于高并发的流量,都会访问到数据库中,对数据库造成流量的压力。 如何解决现在我们已经知道会有缓存预热这个问题,那么就要想一下对策咯。可以分析出以下两点:
所以我们可以设计一个如下方案:
缓存更新的几种设计1. 先删除缓存,在更新数据库虽然这是一种错误方法,但是这种设计也是属于缓存更新的一种方法,所以大家还是要知道为什么不可以这么做。还是那句话:知其所以然嘛。
这种方法就是在更新数据库时,先删除缓存,然后在更新数据库,而后续的操作会把数据在装载到缓存中,这种逻辑在并发时就会先脏数据,看如下图: 前言Hello,everybody,我是asong,今天我依然聊一聊缓存,不过今天我们聊的不是面试了,我们一起来看一看我们在系统中缓存更新的设计,因自己经验有限,所以这些缓存设计来源于网上,我只是在这里总结一下,有什么不对的欢迎指出。
缓存预热 To solve 缓存冷启动
什么是缓存预热呢?我们都知道平常在跑步前都要热身,可以预防肌肉拉伤等一系例的好处。所以缓存预热具有同样的道理,我们的新系统上线后,我们可以将相关的缓存数据直接加载到缓存系统。这样可以避免在用户请求的时候,先去查询数据库,然后再将数据缓存的问题。用户可以直接查询事先已被预热的缓存数据。其实缓存预热是为了解决缓存冷启动问题,我们新系统上线后,redis集群启动后,没有任何的缓存数据,这就是redis的冷启动 中文有几个特点,让AI识别更高效: 1、汉字信息密度高,更少的字数可以承载更多的信息,中文文章永远比英文短,综合来看,中文信息密度比英文高37.5%。 2、中文以汉字为单位,可以灵活排列,横竖都可以,而英文是线性文字,只能横排,竖排、错乱排列的识别效率会骤降! 3、汉字独立表意能力强。比如“他去吃早饭”,你看一个字就能多明白一个字的意思。而英文“He went to have breakfast”,你即使看到“have”这个词,你依然不明大概的意思,只有到“breakfast”你才知道原来have是吃,went to是去,整句是去吃早饭。英文表意比较依赖“短语”,甚至整句,不看完整句话,你往往不能知道句意。这就给AI识别造成了难度,因为AI跳跃识别能力较差。 文字识别,中文胜。 三、同音字词 中文发展人工智能比较大的障碍就是同音字词现象!比如,他姓zhang,到底是“张”还是“章”呢?如果是口语的话,还要补一句弓长张,或立早章。中文里有多少同音字、同音词,很难准确的统计。同音字词也是英语使用者攻击中文表意不清比较大的借口。 英语虽然也有同音字,如right正确的、write写字;meet遇见、meat 肉;hole 洞穴、whole 全部的;pear梨子、pair双;flower花、flour面粉等,但英语同音字词数量远比中文同音词数量少。英语是通过造更多单词的方法,来减少同音词现象的。 AI现在不能准确处理多音字,出错在所难免。难道为了AI准确,人类只能通过语言文字改革消灭多音字词?这工程也太大了,人类也很难适应这么大的改革! (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
