Redis 持久化存储

一、简介

1、RDB

redis默认的持久化存储方式,每隔一段时间将内存中的数据写入磁盘中。有手动触发和自动出发两种触发方式。

2、AOF

AOF持久化将被执行的写命令记录到AOF文件的末尾,来记录数据发生的变化。Redis启动时,读取AOF文件中的命令并在内存中重新执行,从而恢复数据。

3、区别

|-------|------------------------------------------------------------------|---------------------|
| 持久化技术 | 优点 | 缺点 |
| RDB | 1、拥有相同数据集时,相比AOF持久化所占用磁盘空间更少 2、使用单独的子进程进行持久化存储,主进程不进行其它IO操作,更为高效 | 1、隔一段时间进行持久化,数据安全性差 |
| AOF | 1、通过记录写命令的方式进行持久化,即使发生异常,也可以通过AOF文件恢复数据,安全性更高 | 1、占用磁盘空间大 2、恢复数据慢 |

二、配置

1、RDB
1.1 工作模式

(1)手动触发

由主进程执行save命令,执行过程中会阻塞所有用户请求,直至执行完成。

bash 复制代码
192.168.56.136:6379> save
OK

(2)自动触发

bgsave。当内存增长到指定值或指定百分比时,自动触发bgsave。主进程调用fork函数,派生出子进程,进行持久化存储,主进程只负责处理客户请求。数据会先存储到临时文件,当持久化处理完后,用临时文件替换上次持久化的文件dump.rdb。

1.2 配置
bash 复制代码
# rdb文件存放目录
dir /usr/local/redis/
# rdb文件名
dbfilename dump.rdb
# 是否压缩
rdbcompression yes
# 是否检查备份文件完整性
rdbchecksum yes
# 当磁盘空间满时,是否停止redis写操作
stop-writes-on-bgsave-error yes
# 备份策略
# 每隔1分钟,写1000次
save 60 1000
1.3 禁用RDB配置
bash 复制代码
# 禁用RDB
save ""
2、AOF
2.1 工作模式

AOF持久化以日志的形式记录写操作,当服务器宕机重启或服务重启后,会按顺序逐行读取日志来重构数据库并恢复数据。

一般都是和RDB共同使用,不单独使用。

2.2 配置
bash 复制代码
# 开启AOF持久化
appendonly yes

# 工作目录位置
dir /usr/local/redis/

# AOF文件名
# appendonly.aof.1.base.rdb作为基文件
# appendonly.aof.1.incr.of,appendonly.aof.2.incr.of作为增量文件
# appendonly.aof.manifest作为清单文件
appendfilename "appendonly.aof"

# AOF文件存放目录
appenddirname "appendonlydir"

# AOF fsync策略
# 默认everysec,每秒写入一次
# no:只操作系统需要的时候写入,由操作系统操控。速度快,安全性差
# always: 有写入操作就追加到AOF文件中。降低速度,安全性高
appendfsync everysec

# 重写期间是否执行fsync操作
# 默认no,执行fsync。安全性更高,但是影响性能
# yes,不执行fsync。性能更高,但是会丢失数据,最多30秒的数据
no-appendfsync-on-rewrite no

# AOF重写规则
# 当AOF文件超过上次重写文件的百分比(默认100%),或者超过64M
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 是否允许redis在加载aof文件过程中,遇到文件末尾截断或损坏,仍继续加载其它部分
# 默认 yes。允许忽略错误,继续加载。
# no。不允许。每次重启前需要执行 redis check AOF 命令,修复AOF文件
aof-load-truncated yes

# 是否开启RDB AOF混合模式
# 默认yes,开启混合模式。重写时,将持久化数据以RDB格式写入到AOF文件开头,后续的数据以AOF格式追加到末尾
# no,不开启
aof-use-rdb-preamble yes

# 是否在AOF日志文件记录时间戳
# 默认 no,不开启。
# yes,开启。对性能的影响微不足道,会占用更多的磁盘空间,但是可以提供更精确的数据恢复时间
aof-timestamp-enabled no
相关推荐
建投数据1 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi2 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀2 小时前
Redis梳理
数据库·redis·缓存
独行soc2 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天2 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭3 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
工业甲酰苯胺3 小时前
分布式系统架构:服务容错
数据库·架构
独行soc4 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain4 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship4 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存