Redis 的内存回收策略

Redis的内存回收策略用于处理过期数据和内存溢出情况,确保系统稳定性和性能。作为一个高性能的键值存储系统,它通过内存回收策略来维护内存的高效使用

主要包括过期删除策略和内存淘汰策略

过期删除策略

Redis的过期删除策略是通过设置键的过期时间来实现的。在Redis中,每个键都有一个关联的过期时间字段,用于表示该键的过期时间。

当一个键被创建时,可以通过设置其过期时间来指定其在何时自动删除。过期时间可以是一个绝对时间戳(Unix时间戳),也可以是相对于当前时间的秒数。

以下是一些常见的设置键过期时间的命令:

  1. EXPIRE key seconds:将键key的过期时间设置为seconds秒后。
  2. SETEX key seconds value:将键key的值设置为value,并设置其过期时间为seconds秒后。
  3. PEXPIRE key milliseconds:将键key的过期时间设置为milliseconds毫秒后。
  4. PSETEX key milliseconds value:将键key的值设置为value,并设置其过期时间为milliseconds毫秒后。
  5. PERSIST key:移除键key的过期时间,使其永久保存。
  • 定时删除:为设置过期时间的键创建定时器,到期时立即删除。
  • 惰性删除:在访问键时检查是否过期,如果过期则删除。
  • 定期删除:Redis会周期性地对数据库进行检查并删除找到的过期键。

内存淘汰策略(maxmemory-policy):

当Redis使用的内存达到maxmemory限制时,为了防止内存使用过度,需要有一种机制来决定哪些数据应当被优先淘汰以释放内存空间。Redis提供了多种内存淘汰策略供用户选择,这些策略根据不同的场景和需求进行设计,具体包括:

  1. noeviction(默认:不进行数据淘汰。当内存不足以容纳新写入数据时,新写入操作会返回错误。
  2. allkeys-lru:从所有键中选择最少使用的键淘汰。这个策略会通过LRU(Least Recently Used)算法来确定要淘汰的数据。
  3. volatile-lru:只从设置了过期时间的键中选择最少使用的键淘汰,也是基于LRU算法。
  4. allkeys-random:随机从所有键中选择数据淘汰。
  5. volatile-random:随机从设置了过期时间的键中选择数据淘汰。
  6. volatile-ttl:选择那些即将过期的键进行淘汰。

此外,在Redis 4.0版本之后,新增了两种基于LFU(Least Frequently Used)算法的淘汰策略:

  1. volatile-lfu:根据访问频率从设置了过期时间的键中选择最不常用的键淘汰。
  2. allkeys-lfu:根据访问频率从所有键中选择最不常用的键淘汰。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值