10 01 2023

redis持久化

RDB持久化:Redis Database Backup file,也被称为数据快照,简单来说就是把内存中的所有数据都记录到磁盘中。

save命令:执行save命令,可以立即执行一次RDB。save命令会导致主进程执行RDB,这个过程中其他所有命令都会被阻塞。只有在数据迁移时可能用到。

bgsave命令:这个命令执行后会开启独立进程完成RDB,主进程可以持续处理用户请求。

停机时:redis停机时会执行一次save命令,实现RDB持久化。

测试一下 用bgsave命令:

image.png

在redis命令运行目录下,可以找到这个文件dump.rdb

image.png

在redis的配置文件当中能找到相关配置记录:

image.png

这个什么意思呢?

第一条save 900 1  900秒(15分钟),至少有1个key被修改了,就执行bgsave命令。下面两条的意思是类似的,如果要禁用rdb保存机制,则直接把这一段注释起来即可。

image.png

这里压缩功能,如果磁盘空间够的话,可以关闭,从而节省CPU性能。

image.png

这里可以设置文件的名字。

image.png

这里可以设置文件保存在哪一个目录。


RDB原理:bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入RDB文件。

当fork过程中,主进程如果有写操作的时候,会拷贝一份数据,执行写操作。

RDB缺点:RDB有执行间隔,可能存在丢失数据的风险。

fork子进程、压缩、写RDB文件比较耗时。


AOF持久化:Append Only File追加文件。redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

image.png

默认情况下这个功能是关闭的。

image.png

文件名字修改此处即可。

image.png

这里可以配置AOF的记录频率,第一种always,有新的写命令,直接记录到AOF文件当中,性能消耗比较大。第二种默认模式,everysec,写命令执行完成之后,先把命令放入AOF缓冲区中,然后每隔1秒将缓冲区的数据写到AOF文件当中。第三种模式,no,写命令执行完成之后,也是把命令放入AOF缓冲区中,由操作系统决定将缓冲区的内容写回磁盘。

AOF文件重写:(AOF文件会比RDB文件大的多。)AOF会记录对同一个key的多次写操作,只有最后一次写操作才是有意义的。通过bgrewriteaof命令可以让AOF文件执行重写功能。

image.png

这些配置,将自动触发AOF的重写,第一条配置的意思是 这次AOF文件和上次的AOF文件做对比,增长超过多少百分比就触发重写。第二条配置的意思是AOF文件占用体积最小以上才触发AOF重写。


RDB的宕机恢复速度比AOF要快。在数据恢复优先级方面优先AOF文件,因为数据完整性更高。




有任何问题联系 QQ 676558206 email [email protected] [email protected]




延伸阅读
  1. 浪海博客系统友情链接说明
  2. 浪海同志的一生
  3. 浪海皇室 QQ飞车手游
  4. 浪海博客系统部署说明
  5. minio 相关说明
  6. rabbitMQ 相关说明
  7. mysql相关说明
  8. java基础面试题002
  9. gateway服务网关基本使用
  10. ribbon负载均衡
如果出现代码等内容显示不正常,使用以前的显示器:以前的显示器
发表评论