韩都衣舍网站建设策划书,装修网页设计,邵东网页定制,铭讯网站建设Redis 的缓存持久化有两种技术 #xff1a; RDB 和 AOF
RDB
Redis 的数据快照
简单说就是将缓存中的所有数据都记录到磁盘中#xff0c;当Redis发生故障的时候#xff0c;只需读取快照文件#xff0c;就可恢复数据
相应的命令是 save 和 bgsave #xff0c;这两个命名…Redis 的缓存持久化有两种技术 RDB 和 AOF
RDB
Redis 的数据快照
简单说就是将缓存中的所有数据都记录到磁盘中当Redis发生故障的时候只需读取快照文件就可恢复数据
相应的命令是 save 和 bgsave 这两个命名都可以手动执行RDB持久化不过
save 由 Redis 主线程来执行RDB会阻塞所有命令bgsave 开启子线程执行RDB主线程不受影响
如果每次RDB都需要手动输入save或bgsave命令未免太麻烦
因此Redis内部有RDB触发机制格式 save [时间] [key的修改次数] 比如 save 300 1 表示300秒内至少有一个key被修改了则执行 bgsave
AOF
AOF全称 Append Only File 追加文件。Redis 处理的每一个写命令都会记录在AOF文件中相当于一个命令日志文件
AOF 的开启方法
找到 redis.conf 文件其中有一行语句是 appendonly no因为Redis默认关闭AOF改为appendonly yes就可开启AOF下面还有一行语句 appendfilename “appendonly.aof” 指定AOF文件名
设置 AOF 的记录频率
AOF的执行频率也叫刷盘策略同样是通过redis.conf 文件进行配置总共有三档频率
appendfsync always 同步刷盘每执行一次写命令就立刻记录到AOD文件appendfsync everysec 每秒刷盘写命令先放入AOF缓冲区然后每隔一秒将缓冲区数据写到AOF文件这是Redis默认的AOF刷盘策略appendfsync no操作系统控制写命名都先放入AOF缓冲区由操作系统决定何时将缓冲内容写回磁盘
三种刷盘策略由上到下性能原来越好但可靠性越来越差因此实际开发过程中大部分选择 appendfsync everysec 刷盘策略
另外 AOF文件比RDB文件要大的多而且AOF会记录对同一个key的多次写操作但只有最后一次是有效的。我们可以通过 bgrewriteaof 命令让AOF文件执行重写功能用最少的命令达到相同的效果
比如 set num 1 set name zyj set num 3
执行bgrewriteaof命令后可重写为 mset name zyj num 3
Redis也会在触发阈值时自动去重写AOF文件。阈值也可以在redis.conf中配置
找到语句 auto-aof-rewrite-percentage [百分比]该语句表示 AOF文件比上次文件增长超过多少百分比触发重写语句 auto-aof-rewrite-min-size [AOF文件大小]该语句表示AOF文件达到多大就触发重写
RDB 和 AOF 对比
RDB - 优点 文件小 宕机恢复速度快 缺点 数据完整性较低 占用的CPU和内存资源较大
AOF - 优点 数据完整性较高 在记录时占用的CPU和内存资源较小但重写的时候占有很大 缺点 文件体积大较占用磁盘空间宕机恢复速度较慢
RDB和AOF各有自己的优缺点如果对数据安全性要求较高在实际开发中往往会结合两者来使用。