如何配置Redis RDB的自动保存规则_理解save seconds changes的触发逻辑

冬涛吖_4015

冬涛吖_4015

2026-06-26

846人浏览

原创

redis的save配置是基于lastsave_time和dirty计数的固定窗口机制,非滑动窗口;满足任一save规则即触发bgsave,且仅统计写命令次数。

如何配置redis rdb的自动保存规则_理解save seconds changes的触发逻辑

Redis 的 save 配置不是“每 N 秒检查一次”,而是从上一次成功保存(lastsave)开始计时、累计变更次数的固定窗口机制。 理解错这一点,就容易误判备份是否触发、为什么该触发却没触发、或者为什么在低流量下也频繁生成 RDB 文件。

save 900 1 这类配置到底怎么算时间与次数

Redis 启动或完成一次 RDB 持久化后,会记录 lastsave_time(Unix 时间戳),并重置脏计数器 dirty 为 0。之后每次写命令(如 SET、DEL、HSET)都会让 dirty 加 1;同时 Redis 会周期性(默认每 100ms)检查所有 save 规则是否满足:

  • 条件是「current_time - lastsave_time >= seconds」且「dirty >= changes」两个必须同时成立
  • 不是滑动窗口:不看“过去 900 秒内有没有 1 次修改”,而是看“距离上次保存是否过了 900 秒,且这期间总共改了多少次”
  • 多个 save 行是 OR 关系:只要任意一条满足,立刻触发 BGSAVE
  • 注意:只统计写操作次数,不区分 key 数量——HMSET k f1 v1 f2 v2 f3 v3 算 1 次,SET k v 也算 1 次

为什么改了 1 次,15 分钟后也没触发 save 900 1

常见原因不是配置失效,而是 dirty 被意外重置或 lastsave_time 被更新过早:

  • 执行过 FLUSHALL 或 FLUSHDB:如果数据库非空,会强制触发一次 BGSAVE,导致 lastsave_time 更新,dirty 归零
  • 主从全量同步:主节点在向从节点发送 RDB 时,也会调用 BGSAVE,同样重置计时器
  • 手动执行过 SAVE 或 BGSAVE:哪怕只是调试时跑了一次,也会刷新 lastsave_time
  • 配置被覆盖:确认 redis.conf 中没有多处 save 行互相注释/取消注释,也没有通过 CONFIG SET save "900 1" 动态覆盖但未持久化到文件

如何验证当前 dirty 和 lastsave 状态

别猜,直接查。连接 Redis 后运行:

Redis Skill - 高性能缓存管理
Redis Skill - 高性能缓存管理

Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。

下载
INFO persistence

重点关注这几项:

  • rdb_last_save_time:最后一次成功保存的时间戳(秒级)
  • rdb_changes_since_last_save:自上次保存以来的写操作次数(即当前 dirty 值)
  • rdb_bgsave_in_progress:是否正在执行 BGSAVE(1 表示是)
  • rdb_last_bgsave_status:上一次 BGSAVE 是否成功(ok 或 err)

用 redis-cli 实时观察:watch -n 1 'redis-cli INFO persistence | grep -E "(rdb_last_save_time|rdb_changes_since_last_save)"',就能看到计时和计数怎么走。

线上环境调参要注意的三个实际约束

配置不是越敏感越好,得看业务写负载、磁盘 I/O 和内存压力:

  • 高频小写场景(如计数器、session 刷新):避免配 save 60 10000 这类低延迟高阈值组合——可能每 2 秒就攒满 10000 次,导致每 2 秒一次 fork,加重 CPU 和内存压力
  • 冷数据或只读服务:可直接禁用自动 RDB:save ""(空字符串),避免无谓的 fork 和磁盘写入
  • 混用 AOF 时:save 和 appendfsync everysec 可能撞在同一毫秒刷盘,引发 I/O 尖峰;建议错开——比如把 save 60 10000 改成 save 61 10000,避开系统默认的秒级对齐

真正容易被忽略的是:Redis 不会在 dirty 达标但 lastsave_time 还很新时提前触发;它也不保证“刚好在第 900 秒整触发”,而是在下一个检查周期(约 100ms 后)才判断——所以实际延迟可能在 900~900.1 秒之间。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

redis redis 配置

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4449

19

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.14

3995

11

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

7332

6

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

643

6

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

756

6

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

7162

6

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1160

6

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1076

6

redis主要作用有哪些
redis主要作用有哪些

redis 的主要作用包括:1. 缓存数据,提高访问速度;2. 充当消息队列,实现消息传递;3. 存储各种数据类型,如字符串、散列和集合;4. 管理会话信息,确保可靠性和可用性;5. 限制请求速率,防止服务器超载等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

6298

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习