Redis 数据持久化

2.1:Redis 数据持久化

2.1.1:RDB 模式

配置 RDB save 策略
[root@node106 ~]# vim /usr/local/src/redis-4.0.14/redis.conf
################################ SNAPSHOTTING  ################################
save 900 1
save 300 10
save 60 1000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_6379.rdb
dir /apps/redis/data
重启 Redis
[root@node106 ~]# systemctl restart redis
写入测试数据
[root@node106 ~]# cat redis.sh
#!/bin/bash
NUM=`seq 1 1000`
for i in ${NUM};do
  redis-cli -h 127.0.0.1 set key-${i} value-${i} 1>/dev/null
done
echo "数据写入完成"

[root@node106 ~]# bash redis.sh
数据写入完成

127.0.0.1:6379> keys * 
……
 996) "key-402"
 997) "key-807"
 998) "key-455"
 999) "key-124"
1000) "key-626"
验证 RDB

刚刚的写入操作,符合 save 60 1000 策略,60s 时执行了 bgsave:

[root@node106 ~]# tail -f /apps/redis/logs/redis_6379.log
f14827:M 30 Dec 21:43:36.012 * 1000 changes in 60 seconds. Saving...
14827:M 30 Dec 21:43:36.012 * Background saving started by pid 15886
15886:C 30 Dec 21:43:36.018 * DB saved on disk
15886:C 30 Dec 21:43:36.019 * RDB: 0 MB of memory used by copy-on-write
14827:M 30 Dec 21:43:36.114 * Background saving terminated with success

查看保存的 RDB 文件:

[root@node106 ~]# ll /apps/redis/data/
total 20
-rw-r--r-- 1 redis redis 18885 Dec 30 21:43 dump_6379.rdb

重启 Redis 后,会载入 RDB 文件中的数据:

[root@node106 ~]# systemctl restart redis

[root@node106 ~]# tail -f /apps/redis/logs/redis_6379.log
18248:M 30 Dec 23:20:09.438 * DB loaded from disk: 0.001 seconds

[root@node106 ~]# redis-cli
127.0.0.1:6379> keys * 
……
 996) "key-402"
 997) "key-807"
 998) "key-455"
 999) "key-124"
1000) "key-626"

2.1.2:AOF 模式

配置 AOF 策略

将存储策略设置为每秒写入(everysec):

[root@node106 ~]# vim /apps/redis/etc/redis.conf
############################## APPEND ONLY MODE ###############################
appendonly yes
appendfilename "appendonly_6379.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
重启 Redis
[root@node106 ~]# systemctl restart redis

虽然 RDB 文件仍然存在,但 Redis 启动后并未将其数据载入内存,说明 AOF 模式开启时,会忽略 RDB 文件,而是载入 AOF 文件中的数据;

[root@node106 ~]# ll /apps/redis/data/
total 20
-rw-r--r-- 1 redis redis     0 Dec 30 21:55 appendonly_6379.aof
-rw-r--r-- 1 redis redis 18885 Dec 30 21:43 dump_6379.rdb

[root@node106 ~]# redis-cli        
127.0.0.1:6379> keys *
(empty list or set)
写入测试数据
127.0.0.1:6379> set foo bar
OK
验证 AOF

查看 AOF 文件中的记录:

[root@node106 ~]# cat /apps/redis/data/appendonly_6379.aof 
*2
$6
SELECT
$1
0
*3
$3
set
$3
foo
$3
bar

重启 Redis,会载入 AOF 文件中的数据:

[root@node106 ~]# systemctl restart redis

[root@node106 ~]# tail -f /apps/redis/logs/redis_6379.log
16824:M 30 Dec 23:13:35.059 * DB loaded from append only file: 0.000 seconds

[root@node106 ~]# redis-cli
127.0.0.1:6379> keys *
1) "foo"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值