redis内存设置及淘汰策略
所属分类 redis
浏览量 1421
redis.conf
maxmemory 100mb
可动态修改内存大小
config set maxmemory 100mb
config get maxmemory
不设置最大内存大小或者设置为0,64位操作系统不限制内存大小,32位操作系统下最多使用3GB内存
内存淘汰策略
noeviction(默认策略) 拒绝写请求(DEL请求和部分特殊请求除外)
allkeys-lru 从所有key中使用LRU算法进行淘汰
allkeys-random 从所有key中随机淘汰数据
volatile-lru 从设置了过期时间的key中使用LRU算法进行淘汰
volatile-random 从设置了过期时间的key中随机淘汰
volatile-ttl 在设置了过期时间的key中,根据key的过期时间进行淘汰,越早过期的越优先被淘汰
使用 volatile-lru volatile-random volatile-ttl这三种策略时,
如果没有key可以被淘汰,则和noeviction一样返回错误
config get maxmemory-policy
maxmemory-policy allkeys-lru
config set maxmemory-policy allkeys-lru
LRU(Least Recently Used) 最近最少使用
Redis使用 近似LRU算法
Approximated LRU algorithm
通过随机采样法淘汰数据,每次随机出5(默认)个key,从里面淘汰掉最近最少使用的key。
采样数量
maxmemory-samples 10
maxmenory-samples 越大,效果越接近于严格的LRU算法
每个key 有一个24bit的字段 ,存储该key最后一次被访问的时间。
Redis3.0对近似LRU的优化
维护一个候选池(大小为16)
池中的数据根据访问时间进行排序
Redis4.0 增加 LFU算法 Least Frequently Used
key被 访问一次 ,不会成为 热点数据
volatile-lfu 在设置了过期时间的key中使用LFU算法淘汰key
allkeys-lfu 在所有的key中使用LFU算法淘汰数据
https://redis.io/topics/lru-cache
上一篇
下一篇
dubbo知识点
lambda使用说明
Redis cluster 原理
redis高可用架构之哨兵
zookeeper不适合用于服务注册与发现
lua语法特点