我是靠谱客的博主 坚强荔枝,最近开发中收集的这篇文章主要介绍缓存以及缓存的三种数据淘汰机制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

缓存

提升数据访问性能,数据备份在内存中,一般支持2种操作:

  • 将数据存到缓存的操作 put(key,value)
  • 获取缓存中数据的操作 get(key)

数据淘汰机制

假设我们有一个缓存,容量为3,接下来我们根据不同的数据淘汰机制做分析:
在这里插入图片描述

淘汰最先放入缓存的数据 FIFO(first in first out)

依次将数据k1,k2,k3存入cache中,当我们继续put(k4,v4)时,缓存是满的,这个时候就需要将缓存中的数据进行淘汰,
根据FIFIO机制,将最先入队的数据从缓存中移除掉,最后将k4存储到缓存中。

可以使用队列来实现

淘汰最久没有使用(put || get)的数据 LRU(least recently used)

无论是put还是get都表示对数据的使用。

依次将数据k1,k2,k3存入cache中,当我们继续put(k4,v4)时,缓存是满的,这个时候就需要将缓存中的数据进行淘汰,
根据LRU机制,需要将最久没有使用过的数据从缓存中移除。

那么按照先后,我们最先put的数据是k1,是最长时间没有被用到的数据了,所以将k1移出缓存,然后将k4加入缓存,此时缓存中的数据是k4,k2,k3。此时我们get(k2),k2又被访问一次,那么现在最久没有被访问的是k3,加入我们put(k5,v5),那么被移除出缓存的将是k3。

淘汰最不频繁使用的数据 LFU(least frequently used)

无论是put还是get都表示对数据的使用。

每次访问都需要对每个k值的访问次数进行记录,需要一个数据进行每个k的使用次数,然后缓存满时,将次数最小的移出缓存。

开源项目1

最后

以上就是坚强荔枝为你收集整理的缓存以及缓存的三种数据淘汰机制的全部内容,希望文章能够帮你解决缓存以及缓存的三种数据淘汰机制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部