Redis内存回收机制

内存回收机制

网上有很多关于这方面的东西,但是我发现有些文章讲的一点都不清楚,甚至会出现错的嵌套的情况。

简介:

Redis中内存回收有两个机制(重点!~~)

  1. 淘汰策略
  2. 内存溢出控制策略

淘汰策略

淘汰策略中又包含两个方法

  1. 惰性删除
  2. 主动删除

惰性删除

当数据的TTL时间在redis中过期,不会直接删除数据,等到下一次访问到该缓存的时候会去删除数据

主动删除

redis每隔指定的时间,会从所有数据中获取一批数据,挑选其过期的数据进行删除,如果过期的数据超过了一定的比例,会重新获取数据继续删除,直到比例小于指定的数值

内存溢出控制策略

当redis的内存达到maxmemory上限时会触发相应的溢出控制策略。执行命令时如果设置了maxmemory参数,都会尝试执行回收内存操作。

具体策略受maxmemory-policy参数控制,Redis支持下边几种策略:

  1. noeviction:不清理(默认)。写会报错,读正常;
  2. volatile-lru:从设置过期时间的键中,删除最近没用过的键;
  3. volatile-lfu:从设置过期时间的键中,删除使用频率最低的键;
  4. volatile-ttl:从设置过期时间的键中,删除最即将过期的键。
  5. volatile-random:从设置了过期时间的键中,随机删除;
  6. allkeys-lru:从所有的键中,删除最近没用过的键;
  7. allkeys-lfu:从所有的键中,删除使用频率最低的键;
  8. allkeys-random:从所有的键中,随机删除。

名词解释

lru:最近最少使用算法(least recently used)
lfu:最不经常使用算法(least frequently used)
ttl:剩余存活时间(time to live)
volatile:代表设置了过期时间的键(有expire属性)
allkeys:代表所有键

参考文章:

Redis-内存回收原理(淘汰策略) - 自学精灵 (skyofit.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值