Redis的两种数据持久化方法

redis运行时将磁盘中的数据加载到内存中,如果运行期间杀死进程,更新的数据就不能保存到磁盘中,这样的损失是很大的,因此数据持久化显得尤为重要。先试试不保存的情况,

重启服务器,再验证

这说明刚才设置的a没有写入到磁盘中

持久化的两种方法

1.RDB快照

  分为手动和自动,手动的命令为save和bgsave,save会阻塞当前进程,保存期间不能进行任何响应,bgsave会fork出一个子进程来保存数据,要注意的是,保存的数据是fork时的数据,fork之后的数据还是在内存中,没有持久化,因此如果此时退出进程,还是有部分数据会丢失

运行之后,会在redis的目录下多出一个dump.rdb文件

 这个就是当前数据库的一个快照,下次启动后,会自动读取其中的内容,重启服务器再运行

之前设置的a就保存了,这是手动的保存快照,自动保存需打开配置文件进行配置,打开配置文件redis.windows.conf

save 900 1 表示900秒内如果一个1个key的值被改变就做快照,以此类推。满足一个条件就保存

2.AOF

同样打开配置文件

将no改为yes,开启AOF持久化,接下来的每一条写操作都会被记录到appendonly.aof文件中,但是该文件不会立即写入到磁盘,而是写到缓存中,多久从缓存写到磁盘,这个就是我们来配置了

 appendfsync always 

         #收到写命令后就立即写入磁盘,效率最差,效果最好
    appendfsync everysec

         #每秒写入磁盘一次,效率与效果居中
    appendfsync no 

         #完全依赖操作系统,效率最佳,效果没法保证

系统默认的是everysec

  二者比较

1.AOF由于文件大,即使是有rewrite机制,也比RDB大得多,所以启动效率更低

2.AOF的数据安全性更高,最大限度的避免数据丢失,这从他们的保存策略中就可以看出

原文地址:https://www.cnblogs.com/diwangguilai/p/10974248.html