作者:Grey

原文地址:Redis学习笔记六:持久化实验(AOF,RDB)

Redis几种持久化方案介绍和对比

AOF方式:https://blog.csdn.net/ctwctw/article/details/105173842

RDB方式:https://blog.csdn.net/ctwctw/article/details/105265689

对比:https://blog.csdn.net/ctwctw/article/details/105147277

准备工作

安装Redis,可以参考Redis学习笔记一:安装和配置

AOF实验

如果按照准备工作中的方法安装的redis,找到配置文件,默认在如下位置

vi /etc/redis/6379.conf

修改这两个配置

appendonly yes
appendfsync always
# appendfsync everysec
# appendfsync no

打开always选项,仅为了实验用,生产环境慎用,或者用everysec。

配置好以后,可以通过

service redis_6379 restart

重启redis

然后查看一下redis的data目录,默认在如下位置:

ls /var/lib/redis/6379

显示了aof文件

[root@db01 6379]# ls /var/lib/redis/6379
appendonly.aof

通过redis-cli连上redis,执行一些命令


[root@db01 6379]# redis-cli
127.0.0.1:6379> mset k1 a k2 b k3 c k4 d
OK
127.0.0.1:6379> set k5 e
OK
127.0.0.1:6379> mget k1 k2 k3 k4 k5
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"

模拟数据被摧毁操作,执行flushall

127.0.0.1:6379> flushall
OK

退出redis-cli客户端,查看aof文件内容

[root@db01 6379]# cat /var/lib/redis/6379/appendonly.aof
*2
$6
SELECT
$1
0
*9
$4
mset
$2
k1
$1
a
$2
k2
$1
b
$2
k3
$1
c
$2
k4
$1
d
*3
$3
set
$2
k5
$1
e
*1
$8
flushall

所有操作都被记录下来了,假设我们要恢复摧毁前的数据,我们可以这样操作,打开aof文件,并把最后一行的flushall操作删除, 然后执行

redis-cli  --pipe < /var/lib/redis/6379/appendonly.aof

重新连接redis,查看数据,全部恢复:

[root@db01 6379]# redis-cli
127.0.0.1:6379> mget k1 k2 k3 k4 k5
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"

RDB实验

将aof方式先停用

vi /etc/redis/6379.conf

将这个配置改为no

appendonly no

删掉遗留的aof文件

rm -rf /var/lib/redis/6379/appendonly.aof

进入redis-cli,并清库

flushall

然后删掉dump.rdb文件

rm -rf /var/lib/redis/6379/dump.rdb

经过如上操作,redis目前数据为空,且备份文件也为空,关闭了aof策略,现在开始修改redis的配置文件,配置rdb的策略

vi /etc/redis/6379.conf

配置如下信息

# 60秒之内,至少有5个key发生变化,就触发rdb
save 60 5 # 默认的rdb文件名为:dump.rdb
dbfilename dump.rdb # 默认rdb文件的位置
dir /var/lib/redis/6379

配置修改完毕

重启redis

重新连接redis-cli, 快速执行一些操作(一分钟之内至少set 5个key)

127.0.0.1:6379> set k1 a
OK
127.0.0.1:6379> set k2 b
OK
127.0.0.1:6379> set k3 c
OK
127.0.0.1:6379> set k4 5
OK
127.0.0.1:6379> set k5 dd
OK
127.0.0.1:6379> set k6 dasdfas
OK
127.0.0.1:6379> set k7 5sdfas

将生成的dump.rdb文件先重命名

 mv /var/lib/redis/6379/dump.rdb /var/lib/redis/6379/dump.rdb.backup

重新连接redis-cli。模拟摧毁数据操作

flushall

停掉redis

service redis_6379 stop

将备份的dump文件重新还原

 mv /var/lib/redis/6379/dump.rdb.backup /var/lib/redis/6379/dump.rdb

重新启动redis

service redis_6379 start

重新连接redis-cli,查看数据是否恢复

[root@db01 6379]# redis-cli
127.0.0.1:6379> keys *
1) "k1"
2) "k5"
3) "k2"
4) "k3"
5) "k6"
6) "k4"
7) "k7"
127.0.0.1:6379> mget k1 k2 k3 k4 k5 k6 k7
1) "a"
2) "b"
3) "c"
4) "5"
5) "dd"
6) "dasdfas"
7) "5sdfas"

如上,数据全部恢复。

最新文章

  1. g++编译流程
  2. oracle基本操作
  3. 增量式PID简单翻板角度控制
  4. CAN基础知识
  5. Swift global function(count indexOfObject contains...)
  6. JAVA学习篇--javaweb之Filter具体解释
  7. C#全局鼠标键盘Hook
  8. 见微知著——从自定义类型的operator==说起
  9. Mysql自连接的一些用法
  10. 几个比较常用的jar包
  11. thymeleaf时间格式化
  12. java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量?
  13. SpringBoot2.0针对请求参数@RequestBody验证统一拦截
  14. nginx_ssl_tomcat配置
  15. intellij idea 显示打开文件路径按钮
  16. CentOS7 下curl使用
  17. dos 批处理中%cd% 和%~dp0%的区别
  18. cookie session localstorage sessionStorage区别
  19. 24-filter-拦截器
  20. [python]乱码:python抓取脚本

热门文章

  1. LuckyStar hctf2018
  2. 以聊天的形式解决traefik2.1.X的一个问题
  3. Linux 常用系统性能命令总结
  4. Asp.Net Core 5 REST API - Step by Step
  5. Win10环境下YOLO5 快速配置与测试
  6. 翻译:《实用的Python编程》07_04_Function_decorators
  7. 201871030108-冯永萍 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
  8. 【Git基本命令】
  9. xctf - stack2
  10. Spring Boot demo系列(三):Spring Web+MyBatis Plus