关于缓存:
数据库的数据存储于文件系统,性能相对有限,对于一些高并发和高性能的需求,我们需要缓存,将需要比较频繁读取数据存储于内存中,应用从内存获取数据,满足高并发和高性能的开发需求。
缓存的数据淘汰策略:
应用需要的数据正好处于缓存中,即命中缓存。缓存有一定容量限制,如果应用需要的数据没有命中缓存,而缓存已经达到最大容量,则需要淘汰部分缓存数据。缓存常用的数据淘汰策略,有以下几种。
FIFO
如果一个数据最先进入缓存中,则应该最早淘汰掉。
-
利用一个链式队列保存数据
-
当来了新的数据之后便添加到链式队列末尾
-
如果缓存存满数据,则将链式队列头部数据删除
-
新的数据添加至链式队列末尾
-
如果想提高访问效率,可以利用HashMap来保存每个key在链式队列中对应的位置。
LFU
淘汰访问频率最低的数据
-
利用一个链式队列保存数据,以访问次数为排序。
-
新加入数据插入到队列尾部(因为仅访问一次,访问次数最低);
-
队列中的数据被访问后,访问次数增加1,队列会重新排序;
-
当需要淘汰数据时,将已经排序的队列最后的数据删除。
LRU
淘汰最长时间未被使用的数据
-
利用一个链表保存数据;
-
新数据插入到链表头部;
-
每当命中缓存,则将数据移到链表头部;
-
当链表满的时候,将链表尾部的数据丢弃。
3776

被折叠的 条评论
为什么被折叠?



