redis-过期

本文详细阐述了Redis的过期删除机制,包括定时扫描与惰性删除策略,并介绍了内存不足时的LRU淘汰策略。同时讨论了生产环境和测试环境的不同内存配置。

redis 过期策略

前提知识:redis中所有的key-value组成一个hash字典。其中,带有过期时间的key-value也单独组成一个字典(这对过期和淘汰重要,甚至,zset中的value和score的映射关系也是通过字典保存的。

redis过期策略有两种:

  1. 定时删除(贪心):每秒10次扫描,每次扫描在过期池中中随机选出20个key,删除已经过期的,如果过期key超过四分之一,则继续下次循环。扫描时会阻塞客户端的请求 ,但是最大不会超过25ms。
  2. 惰性删除:操作此rediskey的时候,如果过期,直接删除。

说明:上述过期策略只会针主节点。从节点则会根据主节点的aof文件进行删除。

淘汰策略

redis会设置一个maxmemory来限制内存的大小。超过这个值时就会开发淘汰策略。

  1. noeviction : 拒绝写请求
  2. volatile-lru:只针对设置了过期时间的key,采取近似lru策略
  3. volatile-ttl:只针对设置了过期时间的key,比较key的剩余时间
  4. volatile-random:只针对设置了过期时间的key,随机过期
  5. allkeys-lru: 针对所有的key
  6. allkeys-random:针对所有的key

近似lru策略:

随机选取5个key,淘汰最旧的值。循环如此,直到内存小于maxmemory。

异步操作

虽说redis时单线程的,只是说接收到请求处理数据时是单线程的。其内部有几个异步线程专门处理一些耗时比较严重的任务。

如:

  1. 删除大key
  2. flushDB、flushAll
  3. aof刷盘
  4. 等lo
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值