Redis001 | 常用操作手册
OS Shell下批量操作Redis
|
|
Redis Lua脚本批量删除
|
|
Sentinel查询
|
|
Redis内存管理策略
我们需要注意,缓存过期策略和内存淘汰机制是容易混淆的两个概念,两者的目的不同。
- 缓存过期策略:针对过期 Key ,从内存中移除的方式。
- 内存淘汰机制:针对 Redis 内存不足时,业务还在继续往 Redis 追加内容,如何处理已有的内容。
在 Redis 的 redis.conf
文件中,我们能找到八种可配置的内存淘汰机制:
- volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key;
- allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key;
- volatile-lfu:当内存不足以容纳新写入数据时,在过期密集的键中,使用 LFU 算法进行删除 key;
- allkeys-lfu:当内存不足以容纳新写入数据时,对所有的 key 执行 LFU 算法筛选过期;
- volatile-random:当内存不足以容纳新写入数据时,在设置了过期的键中,随机删除一个 key;
- allkeys-random:当内存不足以容纳新写入数据时,随机删除一个或者多个 key;
- volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除;
- noeviction:当内存不足以容纳新写入数据时,新写入操作直接报错,无法写入。
上述算法按照特性可以分为几类:LRU/LFU 算法、随机删除算法、优先淘汰历史数据算法、报错处理算法。
在项目中推荐两种 LRU 算法,即如果 Redis 用作持久化数据库,不配置缓存过期时间,采用 allkeys-lru
;如果 Redis 作为缓存数据库,配置了 Key 过期时间,采用volatile-lru
算法。
LRU(Least Recently Used,最近最少使用算法)
(完)
- 原文作者: 闪电侠
- 原文链接:https://chende.ren/2021/12/09153738-001-handler.html
- 版权声明:本作品采用 开放的「署名 4.0 国际 (CC BY 4.0)」创作共享协议 进行许可