【redis】redis的过期策略以及内存淘汰机制
warning:
这篇文章距离上次修改已过234天,其中的内容可能已经有所变动。
Redis的过期策略和内存淘汰机制是用来管理和控制Redis中的键的生命周期的。
过期策略:
Redis使用两种策略来处理过期键:惰性和定时。
- 惰性过期:当客户端请求一个键时,Redis会检查键是否过期,如果过期就删除它。
- 定时过期:Redis默认每100ms随机抽查一些设置了过期时间的键,检查并删除其中已经过期的键。
内存淘汰机制:
当Redis的内存超过maxmemory限制时,会根据配置的淘汰策略来移除或交换键。
常见的淘汰策略:
noeviction
: 不进行任何淘汰,当内存不足时,新写入命令会报错。allkeys-lru
: 当内存不足以容纳更多数据时,使用最近最少使用算法(LRU)移除键。volatile-lru
: 只对设置了过期时间的键进行LRU算法移除。allkeys-random
: 随机移除键。volatile-random
: 随机移除设置了过期时间的键。volatile-ttl
: 移除即将过期的键。
配置示例:
在redis.conf文件中设置maxmemory和maxmemory-policy:
maxmemory 2gb
maxmemory-policy allkeys-lru
Redis命令:
CONFIG SET maxmemory-policy allkeys-lru
: 运行时动态设置淘汰策略。MEMORY USAGE key [SAMPLES count]
: 查看给定键的内存使用情况。DBSIZE
: 查看当前数据库的键的数量。
代码示例:
# 设置键的过期时间
EXPIRE mykey 300
# 查看剩余的过期时间
TTL mykey
# 设置Redis配置的淘汰策略
CONFIG SET maxmemory-policy allkeys-lru
以上是Redis过期策略和内存淘汰机制的简要介绍和配置示例。
评论已关闭