【Redis】Redis 的过期策略以及内存淘汰机制详解
Redis 的过期策略和内存淘汰机制是为了保证 Redis 的高效和可控性。
过期策略:
Redis 采用定时删除和惰性删除相结合的方式来处理键的过期。
- 定时删除:Redis 每个 100ms 检查是否有过期的键,有的话就删除。
- 惰性删除:当客户端访问一个键时,Redis 会检查这个键是否过期,如果过期就删除。
内存淘汰机制:
当 Redis 的内存超过 maxmemory 设置的值时,会根据配置的淘汰策略(maxmemory-policy)来淘汰一些键。
- noeviction:不进行淘汰,当内存不足时,新写入命令会报错。
- allkeys-lru:当内存不足以写入数据时,使用最近最少使用算法(LRU)来淘汰键。
- volatile-lru:只对设置了过期时间的键进行 LRU 淘汰。
- allkeys-random:随机淘汰键。
- volatile-random:随机从设置了过期时间的键中淘汰。
- volatile-ttl:淘汰即将过期的键,优先淘汰 TTL 较短的键。
实例代码:
设置键的过期时间:
SET key value EX 10
设置 maxmemory 和 淘汰策略:
# 设置最大内存为 2GB
CONFIG SET maxmemory 2gb
# 设置淘汰策略为 allkeys-lru
CONFIG SET maxmemory-policy allkeys-lru
查看当前的淘汰策略:
CONFIG GET maxmemory-policy
以上是 Redis 过期策略和内存淘汰机制的简要说明和实例代码。
评论已关闭