Redis的RDB持久化测试(RDB默认是启动的)

1.Snapshotting:
缺省情况下,Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开redis.conf文件之后,我们搜索save,可以看到下面的配置信息:
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

2. Dump快照的机制:
1). Redis先fork子进程。
2). 子进程将快照数据写入到临时RDB文件中。
3). 当子进程完成数据写入操作后,再用临时文件替换老的文件。

redis.conf:(修改配置的配置文件)
GENERAL:
daemonize no 改为yes,redis会运行为一个后台进程

pidfile /var/run/redis.pid 进程id文件的路径

port 6379 端口,默认为6379

Snapshotting:
# save 在seconds秒内如果有changes次改变就立即保存
save 900 1
save 300 10
save 60 10000
我们先改为save 60 5000:60秒内5000次变化即保存

rdbcompression yes 是否压缩

dbfilename dump.rdb 快照文件的文件名

dir ./ 快照文件的路径,我们改为 /var/redis

开始测试:
第一步:创建/var/redis目录
mkdir /var/redis
第二步:启动服务,到/usr/local/redis路径下
cd /usr/local/redis
./bin/redis-server redis.conf

第三步:另起一个终端启动客户端
cd /usr/local/redis
./bin/redis-cli
第四步:再启动一个终端,到bin目录下,启动 redis-benchmark 来测试
cd /usr/local/redis/bin

./redis-benchmark -n 6000 测试6000条

第五步:再回到启动客户端的终端
keys * 查看一共有多少个key,可看到测试时产生的key

第六步:再打开一个终端,然后到/var/redis下看一下快照文件是否生成
cd /var/redis
ll 可看到已经生成

第七步:进行下一步测试,我们此时把服务关掉,客户端关掉,然后再启动。
在启动服务器的终端
ps -ef | grep redis 可看redis服务的进程id
kill -9 xxx 例如redis进程id为xxx,可杀掉进程来关闭服务器

在启动客户端的终端
quit 退出客户端

key * 可看到所有key都还在

第八步:再进行测试,我们只添加一个key,然后关掉服务和客户端,看重新启动后添加的key是否还在
set hello "hello world"
重启后发现 hello这个key并不存在了

因为命令数和时间都没达到配置文件中save的要求,所以没有进行内存快照,所以重启后hello不会存在。

你可能感兴趣的:(Redis)