1.redis的数据淘汰策略
最为大家所熟悉的,就是我们在进行redis存值的时候,可以针对每个key-value设置过期时间,时间到,数据自动删除。但是,当我们每个key-value都设置不过期的话,redis是不是就会被撑爆了呢?答案是不太会的,为什么这样说?是因为当我们的redis内存达到设置的maxmemory的时候,就会使用数据淘汰策略来保证redis的高可用性。
redis的六种淘汰策略:
- volatile-lru: 从已设置过期的数据中中随机挑选最近最少使用的多个key进行数据淘汰。
- volatile-ttl: 从已设置过期的数据中挑选即将要过期的数据进行淘汰。
- volatile-random:从已设置过期的数据中任意淘汰数据。
- allkeys-lru: 从数据集中挑选最近最少使用的数据淘汰。
- allkeys-random:从数据集中任意选择数据淘汰。
- noeviction: 不进行删除,达到最大内存时,直接返回错误信息。
以上六点的配置是在redis的配置是文件中maxmemory-policy来决定具体使用哪种淘汰策略。我们可以根据业务场景的不同使用不同的淘汰策略。
2.redis数据淘汰策略中的lru算法
LRU(less recently used)的意思是最少最近使用的。这种算法在redis的淘汰策略中经常遇到,淘汰最少最近使用的数据先淘汰。举例: 比如redis中存了三个用户 张三、李四、王五。 张三每天登陆一次系统、李四每两天登陆一次系统、王五每一周登陆一次系