本文共 2395 字,大约阅读时间需要 7 分钟。
Redis
一个重要的功能点,可以有效的避免服务器因为停电,断网等多种因素导致Redis崩溃后,及时恢复有效数据。RDB
与AOF
。AOF
,重启时加载 AOF
文件恢复数据;RDB
和 AOF
,启动是只加载 AOF
文件恢复数据;RDB
,启动是将加载 dump
文件恢复数据。RDB
,也被称为快照。它可以将某一时刻的所有数据都写入硬盘。比如快照在8点5分创建成功,8点10分创建下次快照,如果在10分的快照没有创建成功就崩溃,则丢失8点5分之后所有的数据。//满足任何一个条件,自动建立快照save 900 1 //900 秒(15 分钟)如果至少更改了 1 个密钥save 300 10 //300 秒(5 分钟)后,如果至少更改了 10 个密钥save 60 10000 //如果至少更改了 10000 个密钥,则 60 秒后
在该配置下创建的快照,调用的命令是BGSAVE
fork
来创建一个子进程,然后子进程负责将快照写入磁盘,而父进程继续处理命令请求。BGSAVE
(比如服务器内存不够,无法支持创建子进程)或者等待快照创建完成也无妨才会使用。SAVE
来创建快照。阻塞客户端,不再执行客户端发送的所有命令,在SAVE
执行完毕后,关闭服务器。Redis
连接另外一个Redis
,并向对方发送SYNC
来开始一次复制操作,如果主服务器目前没有在执行BGSAVE
,或者主服务器并非刚刚执行完BGSAVE
,那么主服务器就会执行BGSAVE
。查看Redis
的redis.conf
配置文件
dbfilename dump.rdb //dump.rdb可自由重命名dir ./ //./可修改文件保存位置
使用只需要将RDB
文件放到Redis
安装目录下,重新启动服务器即可。
1.访问redis根目录 cd /user/local/redsi //redis的安装目录2.登录redis:redis-cli -h 127.0.0.1 -p 6379 //也可以直接使用客户端来连接 3.查看所有key值:keys * //如果没有数据的话可以自己添加些4.使用生成快照命令:SAVE //返回ok之后,把redis目录下的dump.rdb文件先复制到别处5.清空整个 Redis 服务器的数据:flushall //执行完之后,发现redis中没有数据6.还原数据,把dump.rdb再放回安装目录,redis服务器重启: 如果Redis已经配置为service服务,可以通过以下方式重启: service redis restart 如果Redis没有配置为service服务,可以通过以下方式重启: /usr/local/bin/redis-cli shutdown /usr/local/bin/redis-server /etc/redis.conf
RDB
来进行持久化数据,如果Redis
崩溃,系统将会丢失最近一次快照生成之后的所有数据。只追加文件,它会在执行写命令的时候,将被执行的写命令复制到硬盘里面。Redis
只需要从头到尾执行一次AOF
所包含的所有写命令,就可以恢复AOF
文件所记录的数据集。
AOF默认是关闭的,可以通过redis.conf来打开。
appendonly no //yes为打开
如何使用同RDB
一样,放到对应目录,然后重启服务。
redis.conf
的appendfsync
来控制同步频率。
# appendfsync always //每个redis都要执行写命令同步,严重降低redis的速度。appendfsync everysec //每秒执行一次同步,显示的将多个写命令同步到磁盘# appendfsync no //让操作系统来决定何时执行同步
always
都被写入磁盘,从而系统崩溃导致的数据丢失减少降到最少,但对硬盘大量吸入,降低redis
的速度,且硬盘是固态的话,还会降低硬盘寿命。everysec
使用的最多,即使发生崩溃,也最多丢失1秒的数据。no
无法把控,这会导致系统崩溃,丢失不定量的数据。AOF
文件随着Rdis
的不断运行,AOF
文件的体积也在不断增长,极端情况下可能会用完硬盘所有的可用空间,另外一方面,AOF
文件体积的不断增长,日后还原数据,执行文件的时间也就越长。
BGREWRITEAOF
AOF
文件中冗余的命令来重写AOF
文件,尽可能的降低其体积大小。BGSAVE
,会fork
一个子进程,然后由子进程来对AOF
文件进行重写。Redis.conf相关配置
auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
AOF
持久化的时候,如果AOF
文件的体积比上一次重写的体积大了100%并且大于了64MB,就会执行BGREWRITEAOF
命令。可根据实际情况具体修改其参数,不过体积越大,还原时间越长。
转载地址:http://lxden.baihongyu.com/