【算法】缓存淘汰算法LRU/LFU
无论是什么系统,在研发的过程中不可避免的会使用到缓存,而缓存一般来说我们不会永久存储,但是缓存的内容是有限的,那么我们如何在有限的内存空间中,尽可能的保留有效的缓存信息呢? 那么我们就可以使用 LRU/LFU算法 ,来维持缓存中的信息的时效性。 LRU 详解原理 LRU (Least Recently Used:最近最少使用)算法在缓存写满的时候,会根据所有数据的访问记录,淘汰掉未来被访问几...
无论是什么系统,在研发的过程中不可避免的会使用到缓存,而缓存一般来说我们不会永久存储,但是缓存的内容是有限的,那么我们如何在有限的内存空间中,尽可能的保留有效的缓存信息呢? 那么我们就可以使用 LRU/LFU算法 ,来维持缓存中的信息的时效性。 LRU 详解原理 LRU (Least Recently Used:最近最少使用)算法在缓存写满的时候,会根据所有数据的访问记录,淘汰掉未来被访问几...
热key指一段时间内被频繁访问或操作的键。通常出现在商品限时抢购、瞬时新闻热点等业务场景,可能会对系统的稳定性和可用性造成影响,比如对应节点的网卡带宽被打满,出现丢包重传,请求波动耗时大幅上升,甚至影响到业务的正常使用,引发用户的不满。因此,不可能等到热Key出现已经拖垮了服务再去处理,那个时候业务一定已经受到影响,因此需要提前尽可能在设计和开发时避免引入全局热key,另外,真实的生成环境还...
数据库和缓存的一致性问题,在面试以及实践中都是非常重要的知识点,而一般面试者只能说出最佳的实践是什么(即延迟双删或者先更新数据库再删除缓存key),但是不能通过线程之间的读写关系举例说明为什么要这样实践,本文通过穷尽更新缓存的四种方式进行分析,得出了这个结论。最后,本文还介绍了利用消息中间件MQ应对其他更复杂的情形。 [建议先看思维导图和How的总结] Why缓存? 缓存合理使用确提升了系...