这里会涉及到LRU算法
这个是为了更好的使用内存,当内存容量不足的时候,为了使得程序继续运行,做了这样一个回收。
在redis.conf里面有这样一个配置
maxmemory-policy
他的默认情况下是noeviction,意思是当内存达到阈值的时候,reids去申请内存会报错。
还有另外几种回收策略:
allkeys-lru //挑选最少使用的数据进行淘汰
allkeys-random //随机去移除某些key 这个的使用时机是:当我们的应用对redis的访问本身也是一个概率事件时建议用这个策略
volatile-random/lru/ttl //volatile从已经设置了过期时间的数据当中进行选择淘汰 random 随机 lru 最少使用的 ttl即将过期的 相对其他来说我更喜欢这个,因为终于有点智能的意思了
思考一个问题
如何保证redis里的数据 都是热点数据?
答:用allkeys-lru淘汰策略呗~;
需要注意的是 redis的LRU淘汰策略是一个不严谨的,不可靠的算法 他使用的其实还是采样 那么就意味着 这是一个概率事件