Redis AOF 全持久化
简介:
Redis AOF 持久化,将每次接收到更改 redis 数据的操作都记录到一个 aof 文件,当服务器意外宕机或 redis 服务器非法关闭时,不会丢失数据。
可以做到数据安全化,但是性能会受到影响。
1、修改 redis.conf
shell > vim /usr/local/redis/redis.conf daemonize yes port 6379 timeout 300 loglevel debug pidfile /usr/local/redis/logs/redis.pid logfile /usr/local/redis/logs/redis.log databases 16 #save 900 1 #save 300 10 #save 60 10000 #rdbcompression yes #dbfilename dump.rdb ## 关闭 RDB 持久化 dir /usr/local/redis/data/ appendonly yes appendfilename appendonly.aof appendfsync everysec ## 开启 AOF 持久化,定义 aof 文件名,定义同步磁盘规则为每秒强制同步 no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb ## 由于 AOF 的特性是记录每次操作,当客户端执行相同的操作时,aof 也会记录这些相同的每次操作,那么 aof 文件会不断增加。
## 对于这个问题,可以使用 aof 文件的重写功能解决 aof 文件的增长。当 aof 文件满足一定条件时就对 aof 进行重写,重写是根据当前内存数据库中的数据进行遍历到一个临时的 aof 文件,写完后替换原来的 aof 文件。 ## no-appendfsync-on-rewrite 参数表示在重写期间对新接收到的写操作不同步,暂时存在内存中,等重写完后再写入,防止与磁盘 IO 冲突。 ## auto-aof-rewrite-percentage 参数表示 aof 文件增长率大于这个值并且同时 aof 文件大于下面参数值时,触发 aof rewrite ## auto-aof-rewrite-min-size 参数表示当前 aof 文件大小大于这个值时
2、测试 Redis AOF 持久化
shell > redis-server /usr/local/redis/redis.conf shell > ls /usr/local/redis/data/ appendonly.aof
## 生成一个 .aof 的空文件
shell > redis-cli redis 127.0.0.1:6379> set name wang OK redis 127.0.0.1:6379> get name "wang" redis 127.0.0.1:6379> set name1 zhao OK redis 127.0.0.1:6379> get name1 "zhao" redis 127.0.0.1:6379> set name2 lun OK redis 127.0.0.1:6379> get name2 "lun" redis 127.0.0.1:6379> quit shell > cat /usr/local/redis/data/appendonly.aof *2 $6 SELECT $1 0 *3 $3 set $4 name $4 wang *3 $3 set $5 name1 $4 zhao *3 $3 set $5 name2 $3 lun
## 记录了每一次操作
shell > kill -9 `cat /usr/local/redis/logs/redis.pid`
## 像测试 RDB 一样,非法关闭 redis
shell > redis-server /usr/local/redis/redis.conf shell > redis-cli redis 127.0.0.1:6379> get name "wang" redis 127.0.0.1:6379> get name1 "zhao" redis 127.0.0.1:6379> get name2 "lun" redis 127.0.0.1:6379> quit
## 启动测试 keys/value 都存在。
## 建议使用 AOF 持久化的同时也使用 RDB 半持久化,AOF 的优先级是高于 RDB 的,也就是说启动服务时是先加载 AOF ,后加载 RDB 的。
## 当 Redis 服务器磁盘坏掉时,数据如何保证不丢失? Master / slave 的方式解决!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用