优点:1、只有一个文件 dump.rdb,方便持久化。2、容灾性好,一个文件可以保存到安全的磁盘。3、性能最大化,fork 子进程来完成写操作,让主进程连续处理命令,所以是 IO 最大化。利用单独子进程来进行持久化,主进程不会进行任何 IO 操作,担保了 redis 的高性能4、相对付数据集大时,比 AOF 的启动效率更高。缺陷:1、数据安全性低。RDB 是间隔一段韶光进行持久化,如果持久化之间 redis 发生故障,会发生数据丢失。以是这种办法更适宜数据哀求不严谨的时候)2、AOF(Append-only file)持久化办法:是指所有的命令行记录以 redis 命令请 求协议的格式完备持久化存储)保存为 aof 文件。触发机制-紧张三种办法save(同步)bgsave(异步)自动save命令:客户端向Redis发送save命令来创建一个快照文件。
实行save命令的时候,如果存在老的快照文件,新的将会更换老的。bgsave命令:客户端向Redis发送bgsave命令,Redis调用fork创建一个子进程,然后子进程卖力将快照写入硬盘,而父进程则连续处理命令要求。
save命令和bgsave命令比拟:

自动天生:通过配置,知足任何一个条件就会创建快照文件。
快照持久化选项:
多久实行一次自动快照操作,60s之内有1000次操作写入时实行save 60 1000创建快照失落败后是否仍旧连续实行写命令stop-writes-on-bgsave-error no是否对快照文件进行压缩rdbcompression yes命名硬盘上的快照文件dbfilename dump.rdb
最佳配置:
dbfilename dump-${port}.rdbdir /bigdiskpathstop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yes
AOF:持久化AOF持久化(即Append Only File持久化),则是将Redis实行的每次写命令记录到单独的日志文件中,当重启Redis会重新将持久化的日志中文件规复数据。当两种办法同时开启时,数据规复Redis会优先选择AOF规复。
优点:1、数据安全,aof 持久化可以配置 appendfsync 属性,有 always,每进行一次 命令操作就记录到 aof 文件中一次。2、通过 append 模式写文件,纵然中途做事器宕机,可以通过 redis-check-aof 工具办理数据同等性问题。3、AOF 机制的 rewrite 模式。AOF 文件没被 rewrite 之前(文件过大时会对命令 进行合并重写),可以删除个中的某些命令(比如误操作的 flushall))缺陷:1、AOF 文件比 RDB 文件大,且规复速率慢。2、数据集大的时候,比 rdb 启动效率低。优缺陷是什么?
AOF文件比RDB更新频率高,优先利用AOF还原数据。AOF比RDB更安全也更大RDB性能比AOF好如果两个都配了优先加载AOFAOF三种策略always:每条Redis写命令都同步写入硬盘。
everysec:每秒实行一次同步,将多个命令写入硬盘。
no:由操作系统决定何时同步。
三种策略比拟:生产环境中须要根据实际的需求进行选择。
AOF重写随着Redis的运行,被实行的写命令不断同步到AOF文件中,AOF文件的体积越来越大,极度情形将会占满所有的硬盘空间。如果AOF文件体积过大,还原的过程也会相称耗时。为理解决AOF文件不断膨胀的问题,须要移除AOF文件中的冗余命令来重写AOF。
AOF重写的两种实现办法:bgrewriteaof命令bgrewriteaof命令和bgsave命令的事情事理相似:Redis创建一个子进程,然后由子进程卖力对AOF文件进行重写。
AOF重写配置配置参数解释:
详细配置:
appendonly yesappendfilename "appendonly-${port}.aof"appendfsync everyscdir /bigdiskpathno-appendfsync-on-rwrite yesauto-aof-rewrit-percentage 100auto-aof-rewrite-min-size 64mb
3、如何选择得当的持久化办法一样平常来说, 如果想达到足以媲美PostgreSQL的数据安全性,你该当同时利用两种持久化功能。在这种情形下,当 Redis 重启的时候会优先载入AOF文件来恢复原始的数据,由于在常日情形下AOF文件保存的数据集要比RDB文件保存的数据集要完全。如果你非常关心你的数据, 但仍旧可以承受数分钟以内的数据丢失,那么你可以只利用RDB持久化。有很多用户都只利用AOF持久化,但并不推举这种办法,由于定时天生RDB快照(snapshot)非常便于进行数据库备份, 并且 RDB 规复数据集的速率也要比AOF规复的速率要快,除此之外,利用RDB还可以避免AOF程序的bug。如果你只希望你的数据在做事器运行的时候存在,你也可以不该用任何持久化办法。4 Redis持久化数据和缓存怎么做扩容?如果Redis被当做缓存利用,利用同等性哈希实现动态扩容缩容。如果Redis被当做一个持久化存储利用,必须利用固定的keys-to-nodes映射关系,节点的数量一旦确定不能变革。否则的话(即Redis节点须要动态变革的情形),必须利用可以在运行时进行数据再平衡的一套系统,而当前只有Redis集群可以做到这样。
末了,大家如果以为本文不错就点个赞吧~!
“点关注,不迷路”,每天带你分享不一样的PHP技能资讯。
针对知识体系我总结出了互联网公司PHP程序员口试涉及到的绝大部分口试题及答案做成了文档和架构视频资料免费分享给大家(包括swoole、Redis、laravel、thinkphp、swoft、docker、分布式、高并发等架构技能资料),希望能帮助到您口试前的复习且找到一个好的事情,也节省大家在网上搜索资料的韶光来学习。
领取办法:点赞关注
你将收成:
理解当下最火热的微做事架构事理及其开源框架;触及swoole并发、性能优化、分布式等系列PHP高等技能 对照自己节制知识点进行查漏补缺,帮助肃清知识盲区、重构知识体系。