01-Redis持久化
-  概述  
- Redis数据存储在缓存中,为了防止数据的意外丢失,确保数据安全性。所以,就有了redis持久化。
 
-  分类 -   
-  RDB: Redis默认的持久化策略, 直接存储数据 
-  AOF: 存储数据的操作过程. 
 
-  
02-RDB持久化之save指令
-  配置说明 # 设置rdb文件名 dbfilename "dump.rdb" # 设置rdb文件存储路径 dir /usr/local/redis/data # 设置存储rdb时是否压缩数据 rdbcompression no # 设置读写文件过程是否进行RDB格式校验 rdbchecksum no
-  开发步骤 - ①修改redis.conf- 添加RDB配置
 
- ②重启redis服务器
- ③执行save指令
 
- ①修改
-  ①修改 redis.confport 6379 daemonize no # logfile "log-6379.log" maxclients 50 timeout 0 loglevel debug # RDB设置 # 1.设置rdb文件名 dbfilename "dump-6379.rdb" # 2.设置rdb文件存储路径 dir /usr/local/redis/data # 3.设置存储rdb时是否压缩数据 rdbcompression no # 4.设置读写文件过程是否进行RDB格式校验 rdbchecksum no
-  ②重启redis服务器 
-  ③执行 save指令
-  
03-save指令执行流程
-  执行流程 
-  存在的问题 - redis是单线程任务执行序列,如果在某个执行节点有大量的数据需要进行save操作,那么后续的任务 就会阻塞。
 
04-RDB持久化之bgsave指令
-  配置说明 # 后台存储过程中如果出现错误现象,是否停止保存操作 stop-writes-on-bgsave-error yes
-  开发步骤 - ①修改redis.conf- 添加bgsave配置
 
- ②重启redis服务器
- ③执行bgsave指令
 
- ①修改
-  ①修改 redis.confport 6379 daemonize no # logfile "log-6379.log" maxclients 50 timeout 0 loglevel debug # RDB设置 # 1.设置rdb文件名 dbfilename "dump-6379.rdb" # 2.设置rdb文件存储路径 dir /usr/local/redis/data # 3.设置存储rdb时是否压缩数据 rdbcompression no # 4.设置读写文件过程是否进行RDB格式校验 rdbchecksum no # 5.后台存储过程中如果出现错误现象,是否停止保存操作 stop-writes-on-bgsave-error yes
-  ②重启redis服务器 
-  ③执行 bgsave指令
05-bgsave指令执行流程
-  执行流程 
-  存在的问题 - 不管是save指令还是bgsave指令都需要开发人员手动执行.
 
- 不管是
06-RDB持久化之save配置文件
-  概述 - 开发过程中,最好是一定时间范围内,或者数据量达到一定水平,就可以自动执行bgsave指令,那么 就可以使用到save配置
 
-  配置说明 #每隔second秒执行检测,如果有count个key发生改变,就自动RDB持久化 save seconds count
-  开发步骤 - ①修改redis.conf- 添加自动bgsave配置
 
- ②重启redis服务器
- ③指令演示
 
- ①修改
-  ①修改 redis.confport 6379 daemonize no # logfile "log-6379.log" maxclients 50 timeout 0 loglevel debug # RDB设置 # 1.设置rdb文件名 dbfilename "dump-6379.rdb" # 2.设置rdb文件存储路径 dir /usr/local/redis/data # 3.设置存储rdb时是否压缩数据 rdbcompression no # 4.设置读写文件过程是否进行RDB格式校验 rdbchecksum no # 5.后台存储过程中如果出现错误现象,是否停止保存操作 stop-writes-on-bgsave-error yes # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令 save 10 2
-  ②重启redis服务器 
-  ③指令演示 
07-RDB三种方案对比
- 三种方案对比 
  
- 优点 
  - RDB内部存储的是redis在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景
- RDB恢复数据的速度要比AOF快很多
 
- 缺点 
  - 每次全量备份, 数据量大, 中间如果出现问题, 导致持久化失败;
- 每次读写都是全部数据,当数据量巨大时,效率非常低;
- 需要开启子进程, 耗费服务性能
 
- 解决方案 
  - ①备份数据的操作过程的指令;
- ②使用部分复制.
 
08-AOF概述
- 概述 
  - AOF(append only file),以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令 达 到恢复数据的目的
- 与RDB相比可以简单理解为由记录数据改为记录数据产生的变化
- AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式
- 与RDB同时使用,优先使用AOF进行持久化
 
- 策略 
  - always: 每次写操作都执行aof持久化
- everysec: 默认值, 每隔一秒执行aof持久化
- no: 不做aof持久化
 
09-AOF配置及使用
-  配置说明 # 开启aof持久化功能 appendonly yes # 设置aof文件名 appendfilename 'appendonly-6379.aof' # 设置aof文件存储路径 dir /usr/local/redis/data # 设置aof策略 appendfsync everysec
-  开发步骤 - ①修改redis.conf
- ②重启redis服务器
- ③代码演示
 
- ①修改
-  ①修改 redis.confport 6379 daemonize no # logfile "log-6379.log" maxclients 50 timeout 0 loglevel debug # RDB设置 # 1.设置rdb文件名 dbfilename "dump-6379.rdb" # 2.设置rdb文件存储路径 dir /usr/local/redis/data # 3.设置存储rdb时是否压缩数据 rdbcompression no # 4.设置读写文件过程是否进行RDB格式校验 rdbchecksum no # 5.后台存储过程中如果出现错误现象,是否停止保存操作 stop-writes-on-bgsave-error yes # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令 save 10 2 # AOF设置 # 1.开启aof持久化功能 appendonly yes # 2.设置aof文件名 appendfilename 'appendonly-6379.aof' # 4.设置aof策略 appendfsync everysec
-  ②重启redis服务器 
-  ③代码演示 
-  
10-AOF执行流程
- ①always 
  
- ②everysec 
  
11-AOF重写概述
-  概述 -  [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ke1bL3D-1681709019240)(null)] 
-  只记录结果的指令. 
 
-  
-  好处 - 降低磁盘占用量,提高磁盘利用率
- 提高持久化效率,降低持久化写时间,提高IO性能
- 降低数据恢复用时,提高数据恢复效率
 
12-AOF手动重写
- 概述 
  - 由开发人员手动输入bgrewriteaof触发AOF重写
 
- 由开发人员手动输入
- 代码实现 
  
- 效果如下 
  
- 存在的问题 
  - 需要开发人员手动输入指令完成AOF重写.
 
13-AOF自动重写
-  参数说明 # aof文件大小阈值,默认是1MB auto-aof-rewrite-min-size size # 比之前的aof文件大小增加了percent百分比,默认是100% auto-aof-rewrite-percentage percent # aof文件现在的大小 aof_current_size # aof文件之前的大小 aof_base_size
-  触发条件 # aof当前文件大小 大于 文件阈值 aof_current_size > auto-aof-rewrite-min-size # aof文件大小增量 大于 百分比 aof_current_size-aof_base_size / aof_base_size ≥ auto-aof-rewrite-percentage














![[pgrx开发postgresql数据库扩展]2.安装与开发环境的搭建](https://img-blog.csdnimg.cn/img_convert/5532f1f571da5d6ccc54a556a30a4d5f.webp?x-oss-process=image/format,png)


















