Redis淘汰策略

Redis有8种淘汰策略(常规的+Redis4.0新增的2种lfu策略)

名词解释

lru(less recently used)最近最少使用
ttl(time to live)存活时间
lfu(least frequency use)最少使用频率

淘汰策略

1、 no-eviction(默认策略):不淘汰策略,超过最大内存则返回错误信息;
2、 volatile-lru:已经设置过期时间的KV集中,优先淘汰最近最少使用的;
3、 volatile-ttl:已经设置过期时间的KV集中,优先淘汰剩余存活时间短的;
4、 volatile-random:已经设置过期时间的KV集中,随机选择数据淘汰;
5、 allkeys-lru:所有KV集中,优先淘汰最近最少使用的;
6、 allkeys-random:所有KV集中,随机选择需要淘汰的数据;
新增的两种lfu策略:统计访问频率,将访问频率最少的淘汰掉;
7、 volatile-lfu
8、 allkeys-lfu

lru和lfu的区别

时间:t1~~~~~t2~~~~~t3~~~~t4
~~~~A~A~A~~A~A~A~A~A~~A~~~
~~~~B~~~~~~B~~~~~~B~~~~~~B~

在上图中,分别表示key A和B的使用情况,在t4时刻根据lru和lfu两种淘汰策略:

  • lru策略:因为最近使用的是B,所以会淘汰A;
  • lfu策略:A的使用频率高很多,所以淘汰的是B;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 摘要 Redis是一款优秀的、开源的内存数据库,我在阅读Redis源码实现的过程中,时时刻刻能感受到Redis作者...
    架构飞毛腿阅读 951评论 0 1
  • 长期将Redis作为缓存使用,难免会遇到内存空间存储瓶颈,当Redis内存超出物理内存限制时,内存数据就会与磁盘产...
    吕艳凯阅读 234评论 0 0
  • redis 是内存数据库,可以通过 redis.conf 配置 maxmemory,限制 redis 内存使用量。...
    wenfh2020阅读 746评论 0 0
  • 失效策略上,Redis支持多大6种的数据淘汰策略: volatile-lru:从已设置过期时间的数据集(serve...
    luoyoub阅读 564评论 0 2
  • 一 Redis 内存配置 Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用R...
    花神子阅读 541评论 0 1