美文网首页
redis中的持久化

redis中的持久化

作者: sunpy | 来源:发表于2020-05-26 16:24 被阅读0次

什么是Redis持久化?

所谓的持久化就是让数据一直有所保留,而不是因为外部的计算机断电等行为,造成数据的丢失。而计算机中的内存条是RAM随机存储器,内存这种东西可以随意存取,与存取的速度和地方都无关,但是一旦断电关机就会丢失数据。而磁盘是固定的,不会因为断电等行为使数据丢失。redis是内存数据库为了保持数据的持久化,肯定是要将数据从内存中读取再保存到磁盘上的,而这个过程就是redis的持久化。

持久化方式

一种是快照持久化,采用隔段时间创建内存里面的数据副本。第二种AOF持久化,将导致数据变化的写命令写到AOF文件尾部。

快照方式的配置

save 900 1
save 300 10
save 60 10000

① 如果1个键key改变,那么隔900秒(15分钟)的时间就会将改变的值存储到硬盘。
② 如果10个键key改变,那么隔300秒(5分钟)的时间就会将改变的值存储到硬盘。
③ 如果10000个键key改变,那么隔10000秒的时间就会将改变的值存储到硬盘。

rdbcompression yes

启动rdb文件压缩,耗费CPU资源,默认为yes

rdbchecksum yes

对RDB数据进行数据校验

dbfilename dump.rdb

rdb文件名称

dir ./

rdb文件的位置

快照的过程

① Redis使用fork函数复制一份当前进程(父进程)的副本(子进程)。
② 父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入到磁盘中的临时文件。
③ 当子进程写入完所有数据后会用该临时文件替换旧的RDB文件。

手动发起快照操作

在redis中,我们也可以手动的发起快照保存,来保存我们的数据,常用的命令如下:
save : 手动进行快照操作。
bgsave:手动的采用异步方式进行快照操作。
lastsave : 获取最后一次成功执行快照的时间。
shutdown : 同步保存到服务器并关闭redis服务器。
bgrewriteaof : 当日志文件过长时优化AOF日志文件存储。
注意:save命令和bgsave命令的区别:
save命令是由主进程进行快照,会阻塞其他的请求。bgsave命令是由fork函数复制一份的子进程进行快照的。

快照的优缺点

① 优点:适合大规模的数据恢复。对数据的完整性和一致性要求不高。
② 缺点:由于rdb的方式是每隔一段时间进行一次数据备份的,如果redis突然down掉,那么丢失的最后一次快照后的修改就业丢失了。

使用dump文件恢复redis数据

查看dump文件位置:

127.0.0.1:6380> CONFIG GET dir
1) "dir"
2) "/sunpy/redis/redis-3.2.2/src"

或者直接看redis.conf中的配置dir。将需要恢复的文件放在"/sunpy/redis/redis-3.2.2/src"目录下即可。

AOF方式的配置

appendonly yes

开启AOF持久化

appendfilename "appendonly.aof"

AOF文件名称

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

当前AOF的文件大小超过了上一次重写时的AOF文件大小的百分之多少时会再次进行重写。如果之前没有重写过,那么则以启动时的AOF文件大小为依据。
限制了允许重写的最小AOF文件大小,通常在AOF文件很小的时候即使其中有些冗余的命令也是可以忽略的。

# appendfsync always
appendfsync everysec
# appendfsync no

appendfsync always : 同步持久化,每次发生数据变更就被立即记录到磁盘。性能比较差,但是数据完整性比较好。
appendfsync everysec : 出厂默认推荐,异步操作,每秒往磁盘写入一次,如果一秒内出现宕机,数据就会丢失。在性能和持久化方面最了很好的折中
appendfsync no : 完全依赖操作系统,性能好的时候就持久,不好的时候就不持久化。

相关文章

  • redis mongodb持久化的方式

    redis持久化方式(两种) RDB持久化 redis提供了RDB持久化的功能,这个功能可以将redis在内存中的...

  • redis笔记(四)redis持久化

    redis持久化 Redis持久化机制:redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中...

  • 一篇文章带你深入解析Redis主从复制机制!

    我们了解Redis有两种不同的持久化方式,Redis服务器通过持久化,把Redis内存中持久化到硬盘当中,当Red...

  • Redis与Memcached区别

    Redis优势 redis具有持久化机制,定期将内存中的数据持久化到硬盘。 redis具备binlog功能,所有操...

  • Redis持久化

    Redis持久化的思考 Redis的作者在其博客中提到,他看到的所有针对Redis的讨论中,对Redis持久化的误...

  • Redis常见面试题

    Redis常见面试题 Redis持久化机制 Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同...

  • redis

    redis的持久化 在redis中已经提供了两种持久化的方案 RDB: redis提供的一种基于快照机制实现的持久...

  • redis 学习(16)-- redis 持久化

    redis 持久化 什么是持久化 redis 将所有数据保持在内存中,对数据的更新将异步地保存在磁盘中 持久化的方...

  • Redis 持久化机制RDB、AOF

    磁盘持久化 redis的持久化指的是redis会把内存的中的数据写入到硬盘中,在redis重新启动的时候加载这些数...

  • redis相关问题

    redis持久化的意义:在于故障恢复RDB和AOF两种持久化机制的介绍 RDB持久化机制:对redis中的数据执行...

网友评论

      本文标题:redis中的持久化

      本文链接:https://www.haomeiwen.com/subject/euxsnqtx.html