唠个嗑
现在的面试要求是越来越难了,想当初毕业后面试开发岗位如果你会使用 Redis ,在面试官心中就会觉得,哎呦,你挺不错哦,算是加分项。现在的 Redis 成为了开发者的必备技能,面试如果没用过或不会用 Redis,那你就真的可能被劝退了。不停的学习新技术,或许就是开发者的宿命。
持久化
Redis 可以用来做缓存,也属于 NoSQL 数据库,所以也支持数据持久化,Redis 数据库支持两种持久化方案:
- RDB 快照
- AOF 日志
- 混合持久化
RDB
配置参数
redis.conf 涉及的主要配置
#1、自动备份规则(满足一个条件就会触发备份动作)
save 900 1 #每隔900秒有1次修改则触发
save 300 10 #每隔300秒有10次修改则触发
save 60 10000 #每隔60秒有10000次修改则触发
#2、是否快照备份出现错误后禁止客户端写入,默认是 yes
stop-writes-on-bgsave-error yes
#3、是否对快照文件进行压缩,默认 yes
rdbcompression yes
#4、是否对 RDB 文件进行校验,默认 yes
rdbchecksum yes
#5、定义生成的 RDB 文件名,默认 dump.rdb
dbfilename dump.rdb
#6、定义生成 RDB 文件目录,默认是启动 Redis 服务的目录
dir ./
刚安装好的 Redis,默认开启的是这种持久化方式,在启动服务的目录会备份一个 dump.rdb 文件,Redis 启动的时候会自动加载这个文件来恢复备份的数据。
备份
- 我们可以通过 Redis 客户端发送命令 save 手动备份当前数据的快照,但是 save 是阻塞命令,当备份文件过大,备份操作没有完成时,期间接收的其他操作命令将会被挂起。所以不建议使用 save,这时候出现了 bgsave,见名知意,它会 fork 一个子进程来处理备份操作,不影响主进程处理客户端请求命令。
- 触发配置的自动备份策略,会自动执行 bgsave。
- 执行 shutdown 命令,会触发 save 命令,备份完成后才会服务关闭。
- 搭建主从复制时,在从机连上主机之后,会自动发送一条 sync 同步命令,主机收到命令
之后,首先执行 bgsave 对数据进行快照备份,然后才会给从机发送快照数据进行同步。
AOF
配置参数
#1、开启 aof 配置,默认 no
appendonly yes
#2、定义生成的 AOF 文件名
appendfilename "appendonly.aof"
# 3、自动备份规则(选择一个即可)
# appendfsync always #每次修改都备份
appendfsync everysec #每秒钟备份一次
# appendfsync no #由操作系统自动调度刷磁盘
#4、是否 aof 文件压缩时还继续进行同步操作,默认 no
no-appendfsync-on-rewrite no
#4、定义当目前 aof 文件大小超过上一次重写时的 aof 文件大小的百分之多少的时候,再次进行重写
auto-aof-rewrite-percentage 100
#5、如果之前没有重写过,则以启动时的 aof 大小为依据,同时要求 aof 文件至少要大于 64M
auto-aof-rewrite-min-size 64mb
默认 AOF 是没有开启的,AOF 持久化是将被执行的命令追加到 AOF 文件尾部,数据恢复时把命令从头到尾执行一遍
使用 AOF 方式做持久化,可以把 RDB 持久化的策略注释掉
save ""
#save 900 1
#save 300 10
#save 60 10000
混合持久化
此功能是 Redis4 之后新增的,说实话我也是前几天刚了解到的,接触的不多,这里也简单做个介绍吧,想深入的那只能让您失望了,出门左拐直走…
配置参数
aof-use-rdb-preamble yes
备份方式
通过上面参数设为 yes 来开启,在数据写入的时候先把数据以 RDB 的格式放在文件开头,再将后续的命令以 AOF 的格式追加到文件后面,这样算是引进了 RDB 数据恢复速度快的优点 和 AOF 数据丢失风险小的优点。
Redis 部分思维脑图
如果感觉图片不清楚,公号 charmsongo 回复 Redis 获取
如果有哪些不对的地方烦请指认,先行感谢