什么是数据持久化 ?
Redis 本身是基于内存来存储数据,重启后数据会消失,所以将数据同步到硬盘中可实现永久保存,此过程称为数据持久化操作。
常见的持久化方式 ?
1、基于快照的方式:redis安装一定的周期把内存里面的数据同步到磁盘文件里面。
2、基于文件追加:redis会把对redis数据造成更改的命令记录到日志文件里面,然后再一次重启,执行日志文件里面对redis写的操作,达到数据还原。
基于快照的持久化
修改配置文件,开启基于快照的选项:
save 900 1 #900秒内如果超过1个key被修改,则发起快照保存save 300 10 #300秒内容如超过10个key被修改,则发起快照保存save 60 10000 #60秒内容如超过10000个key被修改,则发起快照保存#以上为系统默认配置
持久化目录(保存到磁盘上的文件)
[root@localhost ~]# cd /var/lib/redis/
[root@localhost redis]# ls
dump.rdb
模拟数据持久化:
[root@localhost redis]# systemctl stop redis #停止服务
[root@localhost redis]# rm -f dump.rdb #删除文件
[root@localhost redis]# systemctl start redis #重启服务
[root@localhost redis]# ls #查看文件
[root@localhost redis]# redis-cli #登录
127.0.0.1:6379> set name tom #设置数据
OK
127.0.0.1:6379> get name
"tom"
127.0.0.1:6379> BGSAVE #提前保存
Background saving started
127.0.0.1:6379> exit
[root@localhost redis]# ls #文件自动生成
dump.rdb
[root@localhost redis]# systemctl restart redis #重启服务
[root@localhost redis]# redis-cli get name #查看数据
"tom"
基于文件追加方式持久化
注意:默认没有开启
[root@localhost ~]# vim /etc/redis.conf #修改配置文件
#appendonly no
appendonly yes #基于日志文件追加方式开启持久化
appendfilename "appendonly.aof" #日志文件
#备份文件周期
# appendfsync always #每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化
appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好折中(推荐)
# appendfsync no #完全依赖os,性能最好,持久化没保证
[root@localhost ~]# systemctl restart redis #重新启动服务
[root@localhost ~]# ls /var/lib/redis/ #查看追加文件生成
appendonly.aof dump.rdb