1、shutdown服务或者杀掉进程测试数据是否丢失
创新互联建站的客户来自各行各业,为了共同目标,我们在工作上密切配合,从创业型小企业到企事业单位,感谢他们对我们的要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。专业领域包括成都网站制作、成都网站设计、电商网站开发、微信营销、系统平台开发。
关闭RDB持久化,启动AOF持久化,重启redis服务。
设置值
127.0.0.1:6379> mset k1 v1 k2 v2
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> get k2
"v2"
shutdown服务
127.0.0.1:6379> shutdown
启动redis服务
查看数据还在
redis-cli -a Redis2019!
Warning: Using a password with '-a' option on the command line interface may not be safe.
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
杀掉redis进程,启动redis服务
查看值还在
redis-cli -a Redis2019!
Warning: Using a password with '-a' option on the command line interface may not be safe.
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
2、测试服务异常导致appendonly.aof 文件乱码
AOF持久化是把操作都写进了文件appendonly.aof
查看文件
cat appendonly.aof
*2
$6
SELECT
$1
0
*5
$4
mset
$2
k1
$2
v1
$2
k2
$2
v2
编辑文件,填写内容代替文件错乱
vi appendonly.aof
sfsbdd
1213fns
*2
$6
SELECT
$1
0
*5
$4
mset
$2
k1
$2
v1
$2
k2
$2
v2
dshfs
sdfksh5&
khdfjsj%$$
oguduog7&*
重启redis服务,访问redis发现失败
redis-cli -a Redis2019!
Warning: Using a password with '-a' option on the command line interface may not be safe.
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Could not connect to Redis at 127.0.0.1:6379: Connection refused
使用fix命令修复文件
[root@master1 data]# redis-check-aof --fix appendonly.aof
0x 45: Expected prefix '*', got: 'd'
AOF analyzed: size=114, ok_up_to=69, diff=45
This will shrink the AOF from 114 bytes, with 45 bytes, to 69 bytes
Continue? [y/N]: y
Successfully truncated AOF
查看文件发现已经修复
cat appendonly.aof
*2
$6
SELECT
$1
0
*5
$4
mset
$2
k1
$2
v1
$2
k2
$2
v2
启动redis服务,访问redis查看数据没有问题
redis-cli -a Redis2019!
Warning: Using a password with '-a' option on the command line interface may not be safe.
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
127.0.0.1:6379> del k1
(integer) 1
127.0.0.1:6379> del k2
(integer) 1
127.0.0.1:6379> mset k5 v5 k6 v6
OK
127.0.0.1:6379> keys *
1) "k5"
2) "k6"
编辑redis.conf,打开RDB持久化
重启redis服务,访问redis,发现数据还是只有AOF持久化的数据,并没有之前RDB持久化的数据,正好证明了同时打开两种持久化配置的情况下会首先使用AOF持久化的数据。
redis-cli -a Redis2019!
Warning: Using a password with '-a' option on the command line interface may not be safe.
127.0.0.1:6379> keys *
1) "k6"
2) "k5"
3、删除所有数据,利用AOF的特点进行修复
删除数据,停止服务
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> shutdown
编辑文件
vi data/appendonly.aof
*2
$6
SELECT
$1
0
*5
$4
mset
$2
k1
$2
v1
$2
k2
$2
v2
*2
$6
SELECT
......
SELECT
$1
0
*1
$8
flushall
删除最后一行 flushall
启动redis服务
发现数据恢复
redis-cli -a Redis2019!
Warning: Using a password with '-a' option on the command line interface may not be safe.
127.0.0.1:6379> keys *
1) "k6"
2) "k5"
参考:
https://blog.csdn.net/qq_33101675/article/details/80631992