redis持久化

一、redis实现持久化过程,如下图

redis是一个内存数据库,它是将数据存储到内存中去,与传统的数据库不同,它的读写效率很好,但是也有一个缺点,一旦发生服务器宕机,这样容易导致数据全部丢失,所以,这里就用到了持久化,持久化可以将数据全部持久化到硬盘中,同时也可以利用持久化文件来恢复数据。redis支持2种持久化:rdb和aof。

 

 

二、持久化触发方式

1手动触发

vim /opt/redis_6379/conf/redis_6379.conf

dbfilename redis.rdb
dir /data/redis_6379/

[root@oldboyedu redis_6379]# redis-cli
127.0.0.1:6379> KEYS *
(empty list or set)
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> BGSAVE
Background saving started
127.0.0.1:6379>
[root@oldboyedu redis_6379]# systemctl stop redis
[root@oldboyedu redis_6379]# systemctl start redis
[root@oldboyedu redis_6379]# redis-cli
127.0.0.1:6379> KEYS *
1) "k2"
2) "k1"

PS:因为做了持久化所以关闭redis再次开启redis数据不会丢失

2自动触发

vim /opt/redis_6379/conf/redis_6379.conf

#900秒内1个key发生改变

save 900 1  

#300秒内10个key发生改变

save 300 10

#60秒内10000个key发生改变
save 60 10000

 三RDB持久化流程图

 

 

 

 

四RDB持久化结论:

没配置save参数时: 1.shutdown/pkill/kill都不会持久化保存 2.可以手动执行bgsave

配置save参数时: 1.shutdown/pkill/kill均会自动触发bgsave持久化保存数据 2.pkill -9 不会触发持久化

恢复时: 1.持久化数据文件名要和配置文件里定义的一样才能被识别 2.RDB文件只有一个数据文件,迁移和备份只要这一个RDB文件即可

注意: RDB高版本兼容低版本,低版本不能兼容高版本 3.x >> 5.X >> OK 5.x >> 3.x >> NoOK

 

五RDB持久化的优势与劣势:

RDB: 类似于快照,当前内存里的数据的状态持久化到硬盘

优点:压缩格式/恢复速度快

缺点:不是实时的,可能会丢数据,操作比较重量

 

六AOF持久化

持久化配置

#开启aof持久化

appendonly yes

 

#aof文件名

appendfilename "redis.aof"

#everysec表示每秒执行一次fsync,可能会导致丢失这1s数据。通常选择 everysec ,兼顾安全性和效率。

 

appendfsync everysec

 

七 AOF持久化流程图

 

 

八aof重写机制

由于aof的实时同步数据,数据越大,那么文件就越大,占用内存也就越多,恢复起数据来也就越慢,所以就有了重写机制,重写机制会对数据进行压缩,保留可以恢复数据的一个最小指令集。

BGREWRITEAOF

 

九 AOF的优势与劣势

AOF:类似于mysql的binlog,可以设置成每秒/每次操作都以追加的形式保存在日志文件中

优点:安全,最多只损失1秒的数据,具备一定的可读性

缺点:文件比较大,恢复速度慢

 

posted on 2021-07-05 23:48  弓长三寿  阅读(42)  评论(0编辑  收藏  举报