当前位置: 首页 > news >正文

Redis(②-持久化)

持久化就是把内存里的临时数据,写到硬盘上保存起来,防止断电、程序崩溃后数据丢失。

RDB 方式(快照模式)

RDB 是 Redis 默认的持久化方式,会在特定条件下把内存中的全量数据生成一个快照文件(默认文件名是 dump.rdb),保存到硬盘。

Redis 的配置文件(通常是 redis.conf)里,默认已经设置了 RDB 的触发规则,格式如下:

# 格式:save <秒数> <修改次数>
# 意思是:在指定秒数内,数据被修改了指定次数,就触发一次 RDB 快照
save 900 1    # 900秒(15分钟)内有1次修改
save 300 10   # 300秒(5分钟)内有10次修改
save 60 10000 # 60秒(1分钟)内有10000次修改

这三个规则满足任意一个,就会自动生成 RDB 文件。

手动触发 RDB(常用操作)

save 命令
在 redis-cli 中输入:

save

✅ 效果:立即生成 RDB 文件
⚠️ 注意:执行期间会阻塞 Redis 服务(不能处理其他命令),适合数据量小的场景。

bgsave 命令(推荐)
在 redis-cli 中输入:

bgsave

✅ 效果:后台生成 RDB 文件,不阻塞 Redis 服务(可以正常处理其他命令)
这是生产环境常用的手动触发方式。

AOF 方式(日志模式)

AOF(Append Only File)是 Redis 的另一种持久化方式,核心是记录所有写操作命令(比如 SETHSETDEL 等),重启时通过重新执行这些命令恢复数据。相比 RDB,它的优势是数据安全性更高(可减少丢失),适合对数据完整性要求高的场景。

AOF 的核心原理

当你执行写命令时,Redis 会先把命令写入内存的命令缓冲区,然后根据配置规则同步到硬盘的 AOF 文件中。
AOF 文件默认名为 appendonly.aof,内容是纯文本格式的 Redis 命令(比如 *3\r\n$3\r\nSET\r\n$4\r\nname\r\n$5\r\ntest\r\n,这是 SET name test 的编码形式)。

开启 AOF(默认关闭,需手动开启)

找到 Redis 配置文件
即 redis.conf(Windows 可能是 redis.windows.conf),在解压的 Redis 目录中可以找到。
修改配置开启 AOF
用文本编辑器打开配置文件,搜索 appendonly,找到这一行:

appendonly no  # 默认关闭

把 no 改成 yes

appendonly yes  # 开启 AOF

可选:调整同步策略(影响数据安全性和性能)
AOF 有 3 种同步硬盘的策略(配置文件中 appendfsync 参数):

# appendfsync always  # 每次写命令都立即同步到硬盘(最安全,但性能最差)
appendfsync everysec  # 每秒同步一次(默认,平衡安全和性能,最多丢1秒数据)
# appendfsync no      # 由操作系统决定何时同步(性能好,但数据丢失风险高)

新手推荐用默认的 everysec(每秒同步)。


重启 Redis 生效

关闭正在运行的 Redis 服务,再用修改后的配置文件启动:

# 关闭 Redis(如果已启动)
redis-cli shutdown# 用新配置启动
redis-server redis.conf  # Linux/Mac
# Windows 可能是:redis-server.exe redis.windows.conf

AOF 文件默认保存在 Redis 的工作目录(用 config get dir 命令可查看目录路径),文件名是 appendonly.aof。
打开这个文件,能看到刚才执行的所有写命令(可能是编码后的格式,不用深究,知道记录了命令就行)。

http://www.dtcms.com/a/321739.html

相关文章:

  • 写一个redis客户端软件,参考 Another Redis Desktop Manager 的设计风格。
  • 【沉浸式解决问题】pycharm关闭科学模式
  • Docker Compose 实战指南:从配置到多容器联动的全流程解析
  • Linux系统编程Day9 -- 理解计算机的软硬件管理
  • Dijkstra?spfa?SPstra?
  • 01Vue3
  • 增长强势 成果丰硕 | Fortinet发布2025年第二季度财报
  • GPT-5正式发布:与Claude 4、Gemini 2.5等主流大模型谁更胜一筹?
  • Java中重写和重载有哪些区别
  • 大模型——部署体验gpt-oss-20b
  • 写论文助手Zotero 的使用
  • Scrapy返回200但无数据?可能是Cookies或Session问题
  • electron 静默安装同时安装完成后自动启动(nsis)
  • 【vLLM 学习】Load Sharded State
  • VB网际探针:零依赖轻量爬虫实战
  • GPT-5 is here
  • STM32 输入捕获,串口打印,定时器,中断综合运用
  • centos系统配置防火墙
  • DDR-怎么计算存储空间-什么是预取(Pre-fetch)
  • 【世纪龙科技】汽车车身测量虚拟实训软件-虚境精测全维赋能
  • 应急响应流程
  • vue2-scoped关键字、组件通信
  • Qwen-Image擅长文字渲染的创作利器
  • 用 Go 写个极简反向代理,把 CC 攻击挡在业务容器之外
  • 深入浅出:掌握银河麒麟桌面操作系统的防火墙管理艺术
  • 3- Python 网络爬虫 — 如何抓取动态加载数据?Ajax 原理与实战全解析
  • Redis:集群(Cluster)
  • eNSP 模拟器安装教程
  • 深入理解模板方法模式:框架设计的“骨架”艺术
  • [激光原理与应用-180]:测量仪器 - 频谱型 - 干涉仪的定义、功能、原理、组成