11-Redis - 持久化值AOF

AOF:append only file

1.修改配置文件redis.conf(修改之前可以先备份一份)

[root@localhost 桌面]# cd /myredis/
[root@localhost myredis]# ll
总用量 44
-rw-r--r--. 1 root root 41404 8月   7 23:17 redis.conf
[root@localhost myredis]# cp redis.conf redis_aof.conf
[root@localhost myredis]# ll
总用量 88
-rw-r--r--. 1 root root 41404 8月  10 11:19 redis_aof.conf
-rw-r--r--. 1 root root 41404 8月   7 23:17 redis.conf
[root@localhost myredis]# 

 vim redis_aof.conf 编辑文件,输入/append定位到append栏,把appendonly no改成appendonly yes,保存退出

2. 启动该文件,启动之前,如下,appendonly.aof并没有这个文件,启动redis_aof.conf之后,出现appendonly.aof

3. 先删除dump.rdb,这个文件是快照留下的文件,为了方便观察操作记录,这里先删除

[root@localhost 桌面]# cd /usr/local/bin
[root@localhost bin]# ll
总用量 8536
-rw-r--r--. 1 root root     139 8月  10 11:53 appendonly.aof
-rw-r--r--. 1 root root      48 8月  10 11:54 dump.rdb
-rwxr-xr-x. 1 root root 2087507 8月   7 23:48 redis-benchmark
-rwxr-xr-x. 1 root root   25165 8月   7 23:48 redis-check-aof
-rwxr-xr-x. 1 root root   52804 8月   7 23:48 redis-check-dump
-rwxr-xr-x. 1 root root 2211477 8月   7 23:48 redis-cli
lrwxrwxrwx. 1 root root      12 8月   7 23:48 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 4346256 8月   7 23:48 redis-server
[root@localhost bin]# rm -f dump.rdb 
[root@localhost bin]# ll
总用量 8532
-rw-r--r--. 1 root root     139 8月  10 11:53 appendonly.aof
-rwxr-xr-x. 1 root root 2087507 8月   7 23:48 redis-benchmark
-rwxr-xr-x. 1 root root   25165 8月   7 23:48 redis-check-aof
-rwxr-xr-x. 1 root root   52804 8月   7 23:48 redis-check-dump
-rwxr-xr-x. 1 root root 2211477 8月   7 23:48 redis-cli
lrwxrwxrwx. 1 root root      12 8月   7 23:48 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 4346256 8月   7 23:48 redis-server
[root@localhost bin]# 

4. 设置集合kv

127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> set k4 v4
OK
127.0.0.1:6379> keys *
1) "k1"
2) "k3"
3) "k2"
4) "k4"
127.0.0.1:6379> 

 5. 删除刚刚设置的kv(因为appendonly.aof会记录刚刚的操作,所以尽管这里已经删除了,但是还是可以恢复)

127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> 

 6. 查看/usr/local/bin下的文件,多了dump.rdb和appendonly.aof,这是备份文件

127.0.0.1:6379> exit
[root@localhost bin]# ll
总用量 8536
-rw-r--r--. 1 root root     314 8月  10 12:10 appendonly.aof
-rw-r--r--. 1 root root      18 8月  10 12:10 dump.rdb
-rwxr-xr-x. 1 root root 2087507 8月   7 23:48 redis-benchmark
-rwxr-xr-x. 1 root root   25165 8月   7 23:48 redis-check-aof
-rwxr-xr-x. 1 root root   52804 8月   7 23:48 redis-check-dump
-rwxr-xr-x. 1 root root 2211477 8月   7 23:48 redis-cli
lrwxrwxrwx. 1 root root      12 8月   7 23:48 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 4346256 8月   7 23:48 redis-server
[root@localhost bin]# 

 7. 打开appendonly.aof文件,发现是刚刚的set kv操作

[root@localhost bin]# cat appendonly.aof 
*2
$6
SELECT
$1
0
*3
$3
set
$2
k1
$2
v1
*3
$3
set
$2
k2
$2
v2
............

8.  尝试恢复数据

这时候并没有数据

[root@localhost bin]# redis-cli -p 6379
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> 

 重启服务,redis会自动把appendonly.aof中的命令执行一遍,相当于恢复数据

redis-server /myredis/redis_aof.conf

再次查看,还是没有发现数据

[root@localhost bin]# redis-server /myredis/redis_aof.conf 
[root@localhost bin]# redis-cli -p 6379
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> 

 查看appendonly.aof发现文件末尾有一个flushall命令

v3
*3
$3
set
$2
k4
$2
v4
*1
$8
FLUSHALL
[root@localhost bin]# 

 这相当于恢复了数据有给flushall掉了,相当于没有恢复,所以keys * 没有发现数据,这时候把这个flushall删掉,保存退出

再次重启服务,发现刚刚被删除的数据已经恢复

 

appendonly.aof和dump.rdb这两个文件可以放在同一个目录下,在启动redis的时候,先启动的是appendonly.aof,后启动dump.rdb,如果appendonly.aof存在错误的命令,那么使用命令redis-server是无法启动redis的

 

 如果appendonly.aof文件中存在错误命令,就使用以下操作修复该文件

 

 在实际开发中要备份appendonly.aof文件

 

 

 

 打开redis.conf文件,查看redis的appendonly.aof日志文件的大小:

默认是64MB,一个在实际开发中用的比较多的redis的公司的这个文件是3G起步,没有达到这个大小,说明这个公司使用redis的机会不大

 

 

 

 

 

posted @ 2017-08-10 12:00  半生戎马,共话桑麻、  阅读(143)  评论(0)    收藏  举报
levels of contents