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> 在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不会存在。