持久化:通俗讲,下次开机还有数据,断电后不会丢失数据,存放于磁盘。
Redis:rdb快照持久化
每隔N分钟或N次写操作后,从内存dump数据形成RDB文件。压缩,放在备份目录。
参数详解:
从下往上看
save 900 1 #900秒内有1个key的变化,
save 300 10 #300秒内有10个key的变化,
save 60 10000 #60秒内有10000次写入,应该保存
stop-writes-on-bgsave-error yes #后台存储错误停止写
redis server主进程在导出的时候,客户端请求,无法回馈。在新版本的redis中,派生出一个子进程专门导出进程。如果导出过程中发现磁盘不够了,但是进程还在工作。势必会出现数据不一致。这里就有参数出现,如果rdb导出过程中,出错,那么就停止客户端写入。
rdbchecksum yes 重启服务器,从rdb导入内存的时候检测
dbfilename dump rdb #设置rdb文件名
dir #设置工作目录,rdb文件会写入该路径
实验:
1,在/var/下创建dir目录
2,修改redis配置文件,加入上面参数,如dir /var/dir指定rdb存放路径
3,重启进程,删除原来的rdb生成的文件
4,利用自带工具,生成10000个key
./redis-benchmark -n 10000
处理的请求数:
99.76% <= 1 milliseconds
100.00% <= 1 milliseconds
98039.22 requests per second 1秒的请求
5,查看/var/dir下是否有文件产生。
6,登陆redis设置一个键值
127.0.0.1:6379> set site www.zixue.it
OK
7,kill redis进程
[root@test-laoyangtest dir]# pkill -9 redis
[root@test-laoyangtest bin]# ./redis-cli
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
8,启动redis进程
[root@test-laoyangtest redis]# ./bin/redis-server ./redis.conf
9,查看设定的键值还在不
[root@test-laoyangtest redis]# ./bin/redis-cli
127.0.0.1:6379> get site
"www.zixue.it"
注意:有一定的缺点,因为会有异常掉电的情况。如之前打点保存了一次数据,在后面的某一点又保存了一次数据。这个时候rdb就不行了。后面会继续讲AOF的工作方式。