redis缓存淘汰策略
来源:互联网 发布:淘宝一千零一夜观看 编辑:程序博客网 时间:2024/06/04 20:03
redis 提供 6种数据淘汰策略:
voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据
上面提到的LRU(Least Recently Used)策略,实际上Redis实现的LRU并不是可靠的LRU,
也就是名义上我们使用LRU算法淘汰键,但是实际上被淘汰的键并不一定是真正的最久没用的,这里涉及到一个权衡的问题,如果需要在全部键空间内搜索最优解,则必然会增加系统的开销,Redis是单线程的,也就是同一个实例在每一个时刻只能服务于一个客户端,所以耗时的操作一定要谨慎 。为了在一定成本内实现相对的LRU,早期的Redis版本是基于采样的LRU,也就是放弃全部键空间内搜索解改为采样空间搜索最优解。自从Redis3.0版本之后,Redis作者对于基于采样的LRU进行了一些优化,目的是在一定的成本内让结果更靠近真实的LRU。
- 策略规则
如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用allkeys-lru
如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用allkeys-random
volatile-lru策略和volatile-random策略适合我们将一个Redis实例既应用于缓存和又应用于持久化存储的时候,然而我们也可以通过使用两个Redis实例来达到相同的效果,
将key设置过期时间实际上会消耗更多的内存,因此我们建议使用allkeys-lru策略从而更有效率的使用内存
失效的内部实现
消极方法(passive way),在主键被访问时如果发现它已经失效,那么就删除它
积极方法(active way),周期性地从设置了失效时间的主键中选择一部分失效的主键删除
主动删除:当前已用内存超过maxmemory限定时,触发主动清理策略,该策略由启动参数的配置决定
阅读全文
1 0
- redis缓存淘汰策略
- 《redis学习》-- 缓存淘汰策略
- Redis 数据淘汰策略
- Redis数据淘汰策略
- redis数据淘汰策略
- redis随笔(一)----redis数据淘汰策略
- 深入剖析 redis 数据淘汰策略
- 深入剖析 redis 数据淘汰策略
- 深入理解Redis数据淘汰策略
- 深入剖析 redis 数据淘汰策略
- 深入剖析 redis 数据淘汰策略
- 深入剖析 redis 数据淘汰策略
- 深入剖析 redis 数据淘汰策略
- redis 提供 6种数据淘汰策略:
- Redis数据过期和淘汰策略详解
- Redis更新缓存策略
- redis缓存策略小结
- redis学习笔记(三)redis数据淘汰策略
- diff.js 列表对比算法 源码分析
- Python学习日记
- java反编译的几种方式
- Linux下遍历目录下的所有文件
- volatile内存语义
- redis缓存淘汰策略
- [SHOI2014]概率充电器 dp
- JAVA基础——类的继承、方法重构(计算两点间距离模型)
- HDU
- multi_item
- SDUT 2199数据结构实验之链表四:有序链表的归并
- 无限轮播
- Python中如何判断对象是否包含某个属性?
- jQuery的AJAX跨域请求----笔记2017-09-13