Redis002 | 产品技术特点汇总
Redis持久化机制
Redis 提供了两种不同的持久化方式:
- RDB(Redis DataBase):在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshotting。
- AOF(Append Only File):保存Redis服务器所执行的所有写操作命令到文件。
|
|
在实际应用中,通常会同时使用RDB和AOF两种持久化方式,以此来保证数据的持久性和可靠性。
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://www.jb51.net/database/324978r5e.htm
https://www.51cto.com/article/785894.html
https://zhuanlan.zhihu.com/p/629247043
https://zhuanlan.zhihu.com/p/689382641
Redis Stream消息队列
消息队列工具如此之火,以至于Redis5.0开始提供了一份模拟Kafka的效率队列数据类型Stream,下面看深度介绍:
https://zhuanlan.zhihu.com/p/496944314
https://zhuanlan.zhihu.com/p/671006777
(完)
- 原文作者: 闪电侠
- 原文链接:https://chende.ren/2024/09/02085305-002-power.html
- 版权声明:本作品采用 开放的「署名 4.0 国际 (CC BY 4.0)」创作共享协议 进行许可