1.Redis 过期删除策略
1)惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。
2)定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。
2.内存淘汰策略
Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
Redis 提供 8 种数据淘汰策略:
LRU全称Least recently used,意思为淘汰掉最久未使用(即最老)的一条数据;
LFU全称Least-frequently used,意思为淘汰掉过去被访问次数最少的一条数据
|
淘汰策略名称 |
策略含义 |
人话 |
|
noeviction |
默认策略,不淘汰数据;大部分写命令都将返回错误 |
不删除任意数据(但redis还会根据引用计数器进行释放),这时如果内存不够时,会直接返回错误。 |
|
volatile-lru |
从设置了过期时间的数据中根据 LRU 算法挑选数据淘汰(只针对设置过期的keys) |
从设置了过期时间的数据集中,选择最近最久未使用的数据释放 ,最老的删掉 |
|
allkeys-lru这个是最常用的 |
从所有数据中根据 LRU 算法挑选数据淘汰(所有keys) |
从数据集中(包括设置过期时间以及未设置过期时间的数据集中),选择最近最久未使用的数据释放 最老的删掉 |
|
allkeys-random |
从所有数据中随机挑选数据淘汰 |
随机选择一个数据进行释放; |
|
volatile-random |
从设置了过期时间的数据中随机挑选数据淘汰 |
从设置了过期时间的数据集中,随机 |
|
volatile-ttl |
从设置了过期时间的数据中,挑选越早过期的数据进行删除 |
从设置了过期时间的数据集中,选择马上就要过期的数据进行释放操作 |
|
allkeys-lfu |
从所有数据中根据 LFU 算法挑选数据淘汰(4.0及以上版本可用) |
淘汰掉过去被访问次数最少的一条数据 |
|
volatile-lfu |
从设置了过期时间的数据中根据 LFU 算法挑选数据淘汰(4.0及以上版本可用) |
淘汰掉设置了过期时间的key过去被访问次数最少的一条数据 |
本文详细介绍了Redis的两种过期删除策略:惰性删除和定期删除,以及8种内存淘汰策略,包括LRU、LFU等,阐述了它们的工作原理和适用场景。
3877

被折叠的 条评论
为什么被折叠?



