参考文献:redis官方文档
redis的缓存
redis可以使用maxmemory命令来配置redis存储数据时可以使用的最大内存大小,在redis.conf中设置,为0代表没有限制,默认也是没有限制。
当内存达到最大时,这时候就需要采取恰当的行动来解决,这就是回收策略
回收策略
redis支持多种不同的策略:
- noeviction:但内存达到限制无法再执行命令时,直接返回错误
- allkeys-lru: 按照lru算法来回收数据
- volatile-lru:按照lru算法来回收过期的数据
- allkeys-random: 随机回收数据
- allkeys-random: 随机回收过期了的数据
- volatile-ttl:回收过期的数据,按照过期的时间顺序
注意,redis采用的lru算法只是使用了一种近似的lru算法,真正的lru算法需要消耗大量的内存所以不被采用
什么是LRU算法
lru,least recently used 最近最少使用,意思为选择出最少被使用的数据
适合于热点数据的处理上,对于偶发的批量操作性能上就不是很好了。
原理:一个栈,每次访问数据的时候都往栈顶加数据,当栈满了时,就会删除栈尾的数据,当访问到的数据已经在栈中存在时,就会把数据重新放会栈顶。这样就可以实现不停的淘汰最少访问的数据