首页  

redis内存设置及淘汰策略     所属分类 redis 浏览量 110
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特性