redis 内存回收机制
时间: 2023-06-13 15:08:47 浏览: 157
Redis的LRU机制介绍
Redis 内存回收机制主要有两种:定时回收和惰性回收。
1. 定时回收
Redis 会周期性地检查已有的 key,判断是否过期并删除过期的 key。这个周期由参数 `hz` 决定,默认值是 10,即每秒检查 10 次。
2. 惰性回收
Redis 使用惰性回收机制来限制内存使用。当 Redis 内存使用达到上限时,就会启动惰性回收机制,通过删除一些过期的 key 或者使用 LRU 策略释放空间。Redis 会根据设置的 `maxmemory-policy` 参数选择对应的惰性回收策略,包括:
- noeviction:不删除任何数据,直接返回错误信息。
- allkeys-lru:从所有的 key 中选择最近最少使用的,进行删除。
- allkeys-random:从所有的 key 中随机选择进行删除。
- volatile-lru:从设置了过期时间的 key 中,选择最近最少使用的进行删除。
- volatile-random:从设置了过期时间的 key 中,随机选择进行删除。
- volatile-ttl:从设置了过期时间的 key 中,选择剩余时间最少的进行删除。
当 Redis 内存使用超过限制时,就会启用惰性回收机制。因此,需要根据实际情况设置合理的内存限制和惰性回收策略。
阅读全文