61°

redis 持久化

1.俩种持久化机制

持久化将数据从内存中持久化到硬盘空间。防止服务器宕机时候,存储在内存中的数据丢失

快照rdb:持久化文件 dump.rdb 默认
aof:持久化文件:appendonly.aof

redis 中配置存储文件的路径:配置文件中

dbfilename dump.rdb
appendonlyfilename appendonly.aof
dir /var/lib/redis

目前默认rdb 开启 aof 关闭。可以使用命令行热修改切换持久化方式

config set appendonly yes

然后退出 shutdown, 修改redis.conf 中 appendonly 为 yes。重启redis

如何退出:
正常停用退出:redis-cli: shutdown, 会将数据持久化到硬盘文件
非正常退出:.kill 9 退出, 不会持久化
如果是已经运行的程序中修改持久化的方式,一定要用命令行热修改方式,它会将数据以新的方式保存下来。保证数据不会丢失。

2. rdb 持久化 = 快照

rdb 持久化能够在指定的时间间隔对数据进行快照存储,保存了某个时间点的数据集,适合用户数据备份,适合灾备。数据文件方便进行传输以及恢复。fork子进程将数据保存到硬盘中。父进程不用做io操作。最大化redis的性能

缺点:(1) 宕机情况下,数据恢复可能不完整
(2) 如果在备份数据时候,数据量足够大。主进程fork子进程的过程很耗时,可能会导致 、 redis在一些毫秒级内不能响应客户端的请求。

设置自动保存的操作:可以设置多个

save 60 100 // 60 秒内至少有100个操作

手动保存:
bgsave 后台备份

不明白的地方怎么配置每小时备份过去24小时的数据???

3.aof 的持久化

aof 持久化 记录每次对服务器的写操作。aof 命令以redis协议最佳保存每次的的操作到文件末尾

优点:(1) 数据的完整性比rdb好
(2) aof 可以在数据文件太大的时候,自动的对aof文件进行重写,重写后的新的aof包含了
恢复当前数据集所需的最小的命令集合。重写时候是安全的。
(3) aof 文件保存了所有数据的写操作。假设执行了 flushall 命令,只要aof文件未被重
写。修改文件移除末尾flushall 命令

本文转载自博客园,原文链接:https://www.cnblogs.com/luofc/p/13166916.html

全部评论: 0

    我有话说: