分布式缓存
2026年3月3日大约 2 分钟
分布式缓存
- 单点Redis存在的问题
- 数据丢失:单点Redis如果发生故障,可能会导致数据丢失。- 解决办法:Redis持久化
- 并发性能:单点Redis在高并发场景下可能会成为性能瓶颈。- 解决办法:建立主从集群
- 故障恢复:单点Redis发生故障后,恢复时间较长,可能会影响系统整体的可用性。- 解决办法:Redis的哨兵机制
- 存储容量:单点Redis的存储容量有限,无法满足大规模数据存储的需求。- 解决办法:Redis的分片集群,插槽机制实现动态扩容
Redis持久化
- Redis提供了两种持久化方式:RDB和AOF。
RDB持久化
- RDB(Redis DataBase Backup File),Redis数据库备份文件,也被称为Redis数据快照。
- 简单来说就是将内存中的数据记录到磁盘中。当Redis实例故障重启后,从磁盘中读取快照文件,恢复数据。
- RDB默认保存在当前Redis运行目录下。
如何手动触发RDB持久化
- 可以使用
BGSAVE命令来手动触发RDB持久化,该命令会在后台异步执行持久化操作,不会阻塞Redis服务器。 - 不推荐,也可使用
SAVE命令来手动触发RDB持久化,该命令会阻塞Redis服务器,直到持久化完成。
自动触发RDB持久化
- Redis可以根据Redis.conf配置文件中的
save参数来自动触发RDB持久化。 - 配置文件中的
save参数格式如下:save <seconds> <changes>- 其中
seconds表示时间间隔,单位为秒;changes表示在这个时间间隔内发生的写操作次数。 - 例如,
save 900 1表示如果在900秒内发生了至少1次写操作,就会触发RDB持久化。
- 其中
提示
虽然配置文件中是save命令,实际上是bgsave命令在后台执行的。
- RDB的其他配置:
dbfilename:指定RDB文件的名称,默认为dump.rdb。dir:指定RDB文件的保存目录,默认为当前Redis运行目录。rdbcompression:指定是否启用RDB文件的压缩,默认为yes。压缩时对cpu有影响。