数据淘汰策略-使用建议
1.优先使用allkeys-lru策略。充分利用LRU算法的优势,把最近最常访问的数据留在缓存中。如果业务有明显的冷热数据区分,建议使用。
2.如果业务中数据访问频率差别不大,没有明显冷热数据区分,建议使用allkeys-random,随机选择淘汰。
3.如果业务中有置顶的需求,可以使用volatile-lru策略,同时置顶数据不设置过期时间,这些数据就-一直不被删除,会淘汰其他设置过期时间的数据。
4.如果业务中有短时高频访问的数据,可以使用allkeys-lfu 或volatile-lfu策略。
常见使用场景
1.数据库有1000万数据,Redis只能缓存20w数据,如何保证Redis中的数据都是热点数据?
使用allkeys-lru(挑选最近最少使用的数据淘汰)淘汰策略,留下来的都是经常访问的热点数据
2. Redis的内存用完 了会发生什么?
主要看数据淘汰策略是什么?如果是默认的配置( noeviction ),会直接报错
总结:
1. Redis提供 了8种不同的数据淘汰策略,默认是noeviction不删除任何数据,内
存不足直接报错
2. LRU: 最少最近使用。用当前时间减去最后一次访问时间, 这个值越大则淘汰
优先级越高。
3. LFU: 最少频率使用。会统计每个key的访问频率,值越小淘汰优先级越高
平时开发过程中用的比较多的就是allkeys-lru (结合自己的业务场景)