持久化原理:
RDB是snapshot快照<二进制文件>存储,是默认的持久化方式。
RDB会按照一定的策略,周期性的将数据保存到磁盘。(下个周期为到来时故障,会丢数据)
借助fork命令的copy on write机制,在快照生成时,将当前进程fork出一个子进程,
然后再子进程中循环所有数据,将数据写成RDB文件。
优点:使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能。
缺点:RDB是按照周期性策略进行持久化,
如果持久化之间redis发生故障,会发生数据丢失,
所以这种方式适合数据要求不严谨的环境。
配置文件相关参数:
dbfilename dump.rdb #指定持久化数据文件名
dir /usr/local/redis-3.0.6-6379/ #默认dir ./
save 900 1
save 300 10
save 60 10000
持久化过程:
当满足save的条件时,比如更改了1个key,900s后会将数据写入临时文件,
持久化完成后将临时文件替换旧的dump.rdb。
使用RDB恢复数据:(需要时间)
重启redis的server即可完成(启动redis的server时会从dump.rdb中先同步数据)
使用命令进行持久化save存储:
./redis-cli -h ip -p port save #前台进行存储
./redis-cli -h ip -p port bgsave #后台进行存储