第一种持久化方案:bgsave
比如说先存储一个name为zhangsan的数据
客户端查看:
假设意外宕机了:
此时查看数据库已经不在了:
所以引入了bgsave:
再次宕机测试,发现数据此时任然存在:
优点:命令简单,方便操作
缺点:需要频繁使用这个命令
第二种方案持久化方案:rdb
查询配置可以发现:
dir ./说明在本地
打开之后
看不懂,继续找配置文件,可以发现:
这个就是rdb持久化方案的配置文件:
save 900 1:900秒之内只有有一个key的值发生变化把数据持久化入磁盘
添加一个用于测试:
改变配置后重新启动进程,执行
等待10s之后宕机,在重启之后发现数据任然存在
优点:省心,做了配置之后自动化持久化数据到磁盘
缺点:假设60s有10000个key发生变化,结果58s宕机,这8s的数据redis没有保存进去第三种持久化方案:aof
查看配置文件:
这里把他改成yes
可以发现多了个文件:
修改配置文件后重启,执行
查看端口ps -ef | grep redis
然后意外宕机kill -9 你的端口,再重启发现数据任然存在
打开appendonly.aof:
这个不就是刚刚操作的命令了吗
append不就是把输入的命令追加到appendonly.aof文件中,后台开启一个线程,每当你输入一个命令就会追加
优点:实时纪律命令,实时持久化
缺点:一个频繁使用的redis,appednonly.aof会非常大,当你启动的适合会读取这个文件,文件很大读取的很慢
如果一个项目允许部分数据丢失,使用rdb
不允许任何数据丢失,使用aof好一点