巧妙设计多级缓存,为数据库减负
发布时间:2018-08-22 11:44:27 所属栏目:MySql教程 来源:DBAplus社群
导读:技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 作者介绍 王梓晨,物流研发部架构师,GIS技术部负责人,2012年加入京东,多年一线团队大促备战经验,负责物流研发一些部门的架构工作,专注于低延迟系统设计与海量数据处理。目前负
即先进先出,淘汰最早进来的缓存数据,一个标准的队列。 以队列为基本数据结构,从队首进入新数据,从队尾淘汰。 LRU(Least RecentlyUsed) 即最近最少使用,淘汰最近不使用的缓存数据。如果数据最近被访问过,则不淘汰。 和FIFO不同的是,需要对链表做基本模型,读写的时间复杂度是O(1),写入新数据进入头部,链表满了数据从尾部淘汰; 最近时间被访问的数据移动到头部,实现算法有很多,如hashmap+双向链表等等; 问题在于若是偶发性某些key被最近频繁访问,而非常态,则数据受到污染。 LFU(Least Frequently used) 即最近使用次数最少的数据被淘汰,注意和LRU的区别在于LRU的淘汰规则是基于访问时间。 LFU中的每个数据块都有一个引用计数,数据块按照引用计数排序,若是恰好具有相同引用计数的数据块则按照时间排序; 因为新加入的数据访问次数为1,所以插入到队列尾部; 队列中的数据被新访问后,引用计数增加,队列重新排序; 当需要淘汰数据时,将已经排序的列表最后的数据块删除; (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |