一、 数据淘汰策略
redis.conf 中 展示如下
config
# The default is:
# maxmemory-policy noeviction数据的淘汰策略: 当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。Redis支持
8种不同策略来选择要删除的key:noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。volatile-ttl: 对设置了TTL的key,比较key的剩余TTL值,TTL越小越先被淘汰。allkeys-random: 对全体key,随机进行淘汰。volatile-random: 对设置了TTL的key,随机进行淘汰。allkeys-lru: 对全体key,基于LRU算法进行淘汰。volatile-lru: 对设置了TTL的key,基于LRU算法进行淘汰。allkeys-lfu: 对全体key,基于LFU算法进行淘汰。volatile-lfu: 对设置了TTL的key,基于LFU算法进行淘汰。
allkeys/volatile-lru (访问时间) 策略
例如: key1是在
3s之前访问的, key2是在9s之前访问的,删除的就是key2
LRU(Least Recently Used):最近最少使用,用当前时间减去最后一次访问时间,这个值越大则淘汰优先级越高
allkeys/volatile-lfu (访问频率) 策略
例如: key1最近5s访问了
4次, key2最近5s访问了9次,删除的就是key1
LFU(Least Frequently Used):最少频率使用。会统计每个key自访问频率,值越小则淘汰优先级越高。
二、不同场景的使用
- 使用
allkeys-lru策略
- 使用
allkeys-random策略: 随机选择淘汰。
- 可以使用
volatile-lru策略, 同时置顶数据不设置过期时间,这些数据就一直不被删除, 会淘汰其他设置过期时间的数据。
- 可以使用
allkeys-lfu或volatile-lfu策略
