Redis运维和开发学习笔记(7) 内存管理和过期策略
文章目录
- Redis运维和开发学习笔记(7) 内存管理和过期策略
- 内存回收策略
- 惰性删除
- 定时任务删除
- maxmemory
- 过期策略allkeys-lru主从搭建测试
- 搭建完毕主从
- 测试结果
- volatile-lru测试结果
- volatile-ttl测试结果
- allkeys-lru
内存回收策略
惰性删除
惰性删除用于当客户端读取带有超时属性的键时,如果已经超过键设置的过期时间,会执行删除操作并返回空。不需要维护TTL链处理过期键的删除。如果有一个键从来没有被访问,那就有问题了。就需要定时任务删除
定时任务删除
默认每10秒执行一次,通过配置hz控制。定时任务中采用自适应算法。根据键的过期比例,使用快慢两种速率回收
maxmemory
内存达到maxmemory限制时触发内存溢出控制策略maxmemory-policy:六种策略
noeviction | 默认不删除,拒绝所有写操作 |
---|---|
volatile-lru | 根据LRU算法删除设置了超时属性 |
allkeys-lru | 根据lru算法删除键,不管数据有没有设置超时属性 |
volatile-random | 随机删除过期键,知道腾出足够空间 |
volatile-ttl | 根据键值对象的ttl属性,删除最近将要过期的数据,如果没有回退到noeviction |
allkeys-random | 随机删除所有键,直到有足够空闲空间 |
过期策略allkeys-lru主从搭建测试
搭建完毕主从
开辟2M空间,往里面写数据。1024条
- 使用脚本写入数据
for ((i=1;i<1024;i++))
doecho -en "helloworld1" | redis-cli -c -p 7010 -x set name$i
done
- 把数据输出
共写入了108条数据这个时候我们再set数据查看变化