网站的劣势,科技展厅设计方案,建投商务网登录,厦门做网站公司有哪些一. Redis过期淘汰策略
当Redis已用内存超过maxmemory限定时#xff0c;触发主动清理策略。 主动清理策略在Redis 4.0之前一共实现了 6 种内存淘汰策略#xff0c;在 4.0 之后#xff0c;又增加了 2 种 策略#xff0c;总共8种#xff1a;
针对设置了过期时间的key做处理…一. Redis过期淘汰策略
当Redis已用内存超过maxmemory限定时触发主动清理策略。 主动清理策略在Redis 4.0之前一共实现了 6 种内存淘汰策略在 4.0 之后又增加了 2 种 策略总共8种
针对设置了过期时间的key做处理
volatile-ttl在筛选时会针对设置了过期时间的键值对根据过期时间的先后进 行删除越早过期的越先被删除。volatile-random就像它的名称一样在设置了过期时间的键值对中进行随机 删除。volatile-lru会使用 LRU 算法筛选设置了过期时间的键值对删除。volatile-lfu会使用 LFU 算法筛选设置了过期时间的键值对删除。
针对所有的key做处理
allkeys-random从所有键值对中随机选择并删除数据。allkeys-lru使用 LRU 算法在所有数据中进行筛选删除。allkeys-lfu使用 LFU 算法在所有数据中进行筛选删除。
不处理
noeviction不会剔除任何数据拒绝所有写入操作并返回客户端错误信息 (error) OOM command not allowed when used memory此时Redis只响应读 操作。
二. Redis淘汰Key的算法LRU与LFU区别
LRU 算法(Least Recently Used最近最少使用)淘汰很久没被访问过的数据以最近一 次访问时间作为参考。LFU 算法(Least Frequently Used最不经常使用)淘汰最近一段时间被访问次数最少的 数据以次数作为参考。 绝大多数情况我们都可以用LRU策略当存在大量的热点缓存数据时LFU可能更好点。
三. 删除Key的命令会阻塞Redis吗
有可能的我们看下DEL Key命令的时间复杂度
删除单个字符串类型的 key 时间复杂度为 O(1)。删除单个列表、集合、有序集合或哈希表类型的 key 时间复杂度为 O(M) M 为以上数据结构内的元素数量。 如果删除的是列表、集合、有序集合或哈希表类型的 key如果集合元素过多是会阻塞 Redis的。对于这种情况我们可以借助scan这样的命令循环删除元素。
如果删除的是字符串类型的 key但是key对应value比较大比如有几百M那么也是会 阻塞Redis的。这种bigkey是我们要尽量减少出现的情况。