Redis快照持久化+参数说明+快照持久化缺陷

Redis快照持久化

持久化: 即把数据存储在硬盘中

rdb的工作原理:

1redis使用fork函数复制当前进程(父进程)的副本(子进程) –在使用fork函数那一刻(T1),父子进共享同一内存数据,其后当父进行执行新的命令时候,操作系统会对内存要修改的数据进行备份以保证子进程的数据是T1时刻的数据。

2父进程接收并处理来自客户端的命令,子进程开始将内存的数据写入硬盘的临时文件中 3当子进程写完所有数据后会用临时文件替换旧的rbd文件

快照持久化缺陷

在2个保存点之间,断电,将会丢失1-N分钟的数据

解决方法aof持久化

Redis快照持久化案例

1快照准备

[root@fei redis]# vim redis.conf

修改内容如下

save 900 1

save 300 10

save 60 100

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump6379.rdb

dir /usr/local/src/redis/back

--杀死redis线程

[root@fei redis]# pkill -9 redis

[root@fei redis]# mkdir back

[root@fei redis]# ls

back  bin  redis.conf

[root@fei redis]# ./bin/redis-server ./redis.conf

2测试

[root@fei redis]# ./bin/redis-benchmark -n 2000

3查看快照文件

[root@fei redis]# ls ./back

dump6379.rdb

发生rbd的情况

1根据配置规则发生rdb

1安规则定时将内存数据存储到硬盘中

2每隔N分钟或N次写操作后, 从内存dump数据形成rdb文件,压缩放在备份目录

配置规则参数说明

save 900 1    #必须900秒之后至少1个关键字发生变化。就发生快照持久化

save 300 10  #必须是300秒之后至少10个关键字发生变化。就发生快照持久化

save 60 10000 #必须是60秒之后至少10000个关键字发生变化。就发生快照持久化

stop-writes-on-bgsave-error yes    #后台快照持久化时发生错误,客户端停止向服务端写操作。

rdbcompression yes    #使用LZF压缩rdb文件。

rdbchecksum yes    #存储和加载rdb文件时校验。

dbfilename dump.rdb    #设置rdb文件名。

dir ./    #设置保存快照持久化目录,rdb文件会写入该目录。

2用户执行save或bgsave命令

用户执行save:

redis会同步进行快照操作,快照执行过程中会阻塞所有来自客户端的情况,数据库数据比较多时,会发生redis长时间不响应情况。

用户执行bgsave:

该命令可以在后台异步进行快照操作,快照的同时也可以响应来至客户端的请求

3执行flushall命令

该命令清空数据库所有数据,快照触发条件:1配置规则不为空就触发,否则不触发。

4执行复制(replication)

发生在主从复制这个环境,即使没有定义1配置规则,并且也没有手动执行快照,也会生成rdb快照文件

使用rdb情况

redis启动后会读取rdb文件,将数据从硬盘加载到内存中

---------------------

猜你喜欢

转载自blog.csdn.net/baidu_38432732/article/details/85651579