网站在网站网站在哪里找到的,彭水县网站开发,网站模板案例,确山专业网站建设redis中的数据存储在缓存中#xff0c;如果没有持久化的策略#xff0c;Redis一旦宕机#xff0c;那么将会导致数据丢失#xff1b;因此redis提供了以下两种持久化方式#xff1a;RDB和AOF
一般来说#xff0c;大部分公司对这两种方式都是同时开启的
一、RDB
RDB策略全…redis中的数据存储在缓存中如果没有持久化的策略Redis一旦宕机那么将会导致数据丢失因此redis提供了以下两种持久化方式RDB和AOF
一般来说大部分公司对这两种方式都是同时开启的
一、RDB
RDB策略全称Redis database backup fileRedis数据备份文件也被叫做redis数据快照简单来说就是把缓存中所有的数据都记录到磁盘中。
当redis故障重启的时候从这个快照文件中读取保存的数据以实现数据恢复 数据RDB有两种方式
1、手动redis-cli执行保存快照
1、使用save命令用主线程来将缓存中的数据保存到快照文件中
这种方式如果数据量大的话会阻塞业务一般不用
2、使用使用bgsave命令开启一个子进程来执行RDB这样你在后面备份不影响正常的主业务允许 2、自动保存快照频率
自动保存快照是开启一个子进程进行定时写入RDB文件不会影响主进程在redis.conf中配置
# 代表在900秒内如果有1条redis中的key被修改那么则执行bgsave保存快照
save 900 1 # 代表在300秒内如果有10条redis中的key被修改那么则执行bgsave保存快照
save 300 10 # 代表在60秒内如果有10000条redis中的key被修改那么则执行bgsave保存快照
save 60 1000
具体使用什么频率来保存根据不同的业务场景来定 3、RDB的原理 bgsave开始时会fork主进程的到子进程子进程共享主进程的内存数据。完成fork后读取内存数据并写入RDB文件。
fork采用 的是copy-only-write技术
当主进程执行读操作时主进程直接访问共享内存当主进程执行写操作时则主进程会把要写的数据拷贝一份出来进行写入此时页表进行读这一个数据时也会访问这个“副本”最后把副本写入共享内存这样就避免了脏数据的问题 二、AOF
AOF全称为Append only file追加文件。Redis处理的每一个写命令都会记录在AOF文件中可以看做是命令日志文件什么时候写入数据对哪条数据进行了修改都有记录。
1、如何开启AOF
老版本的redis默认是不开启AOF功能的需要修改redis.conf配置文件来开启AOF
# 是否开启AOF功能默认是no
appendonly yes
# AOF文件的名称
appendfilename appendonly.aof
2、AOF的命令记录频率
可以在redis.conf配置文件中修改
# 1、表示每执行一次写命令立即记录到AOF文件
# 优点可靠性性高几乎不会丢数据缺点每次操作都写文件性能低
appendfsync always# 2、写命令执行完先放入AOF缓冲区然后表示每隔1秒将缓冲区的数据写入AOF文件是默认方案
# 优点性能适中缺点如果Redis宕机可能丢失这一秒的数据
appendfsync everysec# 3、写命令执行完先放入AOF缓冲区然后由操作系统决定何时将缓冲区内容写入磁盘
# 优点性能最好缺点如果Redis宕机可能丢失大量数据
appendfsync no因为是记录Redis的写入命令这导致AOF文件会比RDB文件大得多。而且AOF文件会记录对同一个key的多次写操作但是只有最后一次写操作才有意义因为最后一次修改的才需要保存嘛前面的留着干啥 通过手动执行bgrewriteaof命令background rewrite aof后台重写aof文件可以让aof文件执行重写功能用最少的命令达到同样的效果Redis恢复以及可以减少文件的大小
Redis也可以在触发阈值时自动去重写AOF文件。阈值可以在redis.conf文件中配置
# AOF文件比上次文件增加超过多少百分比时则触发重写
# 100代表如果AOF文件大小超过100%了翻倍则重写一次也可以配置90 80之类的
auto-aof-rewrite-percentage 100# AOF文件体积最小多大以上才触发重写
# 代表只有AOF文件超过64M大小了才会重写
auto-aof-rewrite-min-size 64mb
三、RDB和AOF的优缺点对比
在现实开发场景中大部分公司都是两种策略都开启的