本文主要是介绍Java面试题:Redis数据淘汰策略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Redis数据淘汰策略
为了避免缓存过多导致内存被占满进行的数据删除策略
Redis提供了8种不同策略来选择要删除的key
noeviction:
不淘汰任何key,但内存满时不允许写入新数据(默认)
volatile-ttl:
对设置了过期数据的key,剩余过期时间越短的key越先被淘汰
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算法进行淘汰
LRU:least recently used最近最少使用
用当前时间减去最后一次的访问时间,值越大越先被淘汰
LFU:least frequently used最少频率使用
key的访问频率越低越先被淘汰
使用建议
业务存在明显冷热区分
优先使用LRU策略,利用lru算法的优势,将最近最常访问的数据保留
业务数据访问频率差别不大
使用allkeys-random,随机进行淘汰
业务有置顶需求
使用volatile-lru策略,通过置顶数据不设置过期时间的方式不删除置顶数据
业务中存在短时高频访问的数据
可以使用allkeys-lfu或volatile-lfu策略
面试问题
如何保证Redis中的数据都是热点数据?
通过使用allkeys-lru策略留下经常访问的热点数据
redis内存用完了会发生什么?
主要看数据的淘汰策略是什么
如果是默认配置会直接报错
这篇关于Java面试题:Redis数据淘汰策略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!