删除和淘汰机制
删除策略
key
到期后, 并不会立即删除, 会有以下两种删除策略:
定期删除:
Redis
每隔一段时间就会去查看下Redis
中设置了过期时间的key
, 会在 100ms 的间隔中默认查看 3 个key
惰性删除:
- 如果去查询一个已经过期的
key
时,Redis
会先查询当前的key
是否已经过期, 如果已经过期, 那么会直接删除key
, 同时返回给用户一个空值 (内存不友好,CPU
友好)
- 如果去查询一个已经过期的
定时过期:
- 每个设置了过期时间的
key
都创建一个定时器, 到期自动清除 (内存友好,CPU
不友好)
淘汰机制
- 每个设置了过期时间的
当
Redis
的内存已经满的时候, 如果又添加了一个数据的话, 那么就会执行淘汰机制- 一共有 8 中淘汰机制volatile-lru
:- 在内存不足的时候,
Redis
会在设置了过期时间的key
中干掉一个最近最少使用的key
- 在内存不足的时候,
allkeys-lru
:- 在内存不足时,
Redis
会在全部的key
中干掉一个最近最少使用的key
- 在内存不足时,
volatile-lfu
:- 在内存不足的时候,
Redis
会在设置了过期时间的key
中干掉一个最近最少频次使用的key
- 在内存不足的时候,
allkeys-lfu
:- 在内存不足时,
Redis
会在全部的key
中干掉一个最近最少频次使用的key
- 在内存不足时,
volatile-random
:- 在内存不足的时候,
Redis
会在设置了过期时间的key
中随机干掉一个key
- 在内存不足的时候,
allkeys-random
:- 在内存不足时,
Redis
会在全部的key
中随机干掉一个key
- 在内存不足时,
volatile-ttl
:- 在内存不足的时候,
Redis
会在设置了过期时间的key
中干掉一个剩余生存时间最少的key
- 在内存不足的时候,
noeviction
:- 在内存不足的时候, 直接报错 (
Redis 默认的淘汰策略
)
- 在内存不足的时候, 直接报错 (
指定淘汰策略的方式: 在
Redis
的配置文件中:maxmemory-policy
: 具体策略
设置
Redis
的最大内存:maxmemory <bytes>
, 单位是字节
推荐文章: