Redis持久化/主从/哨兵

前言

Redis是一个内存数据库,如果没有配置持久化,在Redis重启后,数据就会全部丢失,因此开启Redis的持久化功能,
将数据保存在磁盘上,当Redis重启后,可以从磁盘中获取数据。

一、Redis如何实现持久化?

Redis主要有两种持久化方式,一种是RDB(快照),一种是AOF

二、RDB和AOF的区别和配置

1.RDB

	在指定的时间间隔内将内存中的数据集快照写入磁盘,默认文件名为:dump.rdb
	RDB在redis.conf配置文件中进行配置,命令格式为:save [时间间隔] [次数]
	产生快照的情况:
		1.save:手动在命令行上执行
			会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,知道RDB快照完成为止
		2.bgsave:手动在命令行上执行
			fork创建子进程,RDB持久化过程由子进程负责,会在后台异步进行快照,快照同事还可以响应客户端请求
		3.自动化:配置文件完成,配置触发Redis的RDB持久化条件
			save m n 表示m秒内数据集存在n次变动,自动触发bgsave
		4.主从架构:从节点同步数据时,会发送sync执行同步操作,主节点就会执行bgsave
	优点:
		RDB文件紧凑,全局备份,适合进行备份和灾难性恢复
		在恢复大数据集时的速度比AOF的恢复速度快,生成的事一个紧凑压缩的二进制文件
#持久化文件的文件名称
dbfilename wnn.rdb
​#持久化文件的路径
dir /usr/local/redis/data
​#关闭rdb的方式
#save ""#开启rdb的方式 多个直接换行加
#10秒2个key变动则触发rdb
save 10 2
#100秒5个key变动则触发rdb
save 100 5

2.AOF

	append only file :追加文件的方式,文件容易被读懂
	优点:
		以独立日志的方式记录每次redis的操作命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的
		写入过程中如果出现宕机,也不影响之前的数据,可以通过redis-check-aof检查修复问题
	核心原理:
		Redis每次写入命令会追加到aof_buf(缓冲区)
		AOF缓冲区会根据对应的策略想硬盘做同步操作
	AOF提供了3种同步方式,在性能和安全性方面做出平衡
		1. appendfsync always:每次有数据修改发生时都会写入AOF文件,消耗性能,安全
		2. appendfsync everysec:每秒钟同步一次,该策略为AOF的缺省策略,故障时只能丢失1秒钟的数据
		3. appendfsync no:不主从同步,由操作系统自动刷盘,性能好,不安全
#默认不开启
appendonly yes
appendfilename "appendonly.aof"
#每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync everysec

3.AOF重写

AOF文件越来越大,需要定期对AOF文件进行重写压缩
旧的AOF文件含有无效命令会被忽略,保留最新的数据命令
多条写命令可以合并为1个,更小的AOF文件更容易被redis加载
重写触发配置:
	1.手动触发:直接调用bgrewriteaof命令,使用一个子进程进行重写,不会对redis的正常指令有影响
	2.自动触发:
### aof文件自上一次重写后文件增长了100%则触发重写
auto-aof-rewrite-min-size 100
### aof文件至少达到多少64M才自动重写
auto-aof-rewrite-percentage 64M

4.RDBheAOF混合使用

在redis启动的时候如果既配置RDB又配置AOF,则优先使用AOF,因为AOF更加安全,但是性能不太好,
但是可以混合使用,达到更好的效果
RDB和AOF混合使用,先根据RDB'快照恢复到最后一次记录,在通过AOF进行恢复
配置开启混合使用:
aof-use-rdb-preamble yes

三、Redis主从架构

Redis的主从架构模式其实就是用一个redis节点来做写操作(主节点),多个redis节点来做读操作(从节点),
主节点会将写入的数据同步给从写点,以保证从从节点读取的数据是最新的数据
搭建方式:
	主节点不用修改任何配置,从节点修改redis.conf配置文件
	配置从节点配置文件里主节点的ip端口:replicaof(代表从节点从哪个主节点同步数据)
### 主节点的ip端口
replicaof 192.168.1.11 6379

四、Redis哨兵架构

哨兵架构是在主从架构上衍生出来的,因为主从架构中的主节点一旦挂了,那么久不能再写入数据了,只能从
从节点中读取数据。所以就弄了一个哨兵集群来监视这些节点,当主节点挂了以后,哨兵选举一个从节点变成
主节点,并让写数据的命令得以继续执行。
搭建方式:
	复制一份sentinel.conf文件进行修改,redis配置目录中默认有这个文件
	修改端口号,以及sentinel命令,格式为:sentinel monitor [主节点名称] [端口] quorum
	注:quorum是一个数字类型,意思是有多少个sentinel认为这个主节点失效才算真的失效,比如配置了
	5个sentinel,那么这里3的含义就是如果有3个sentinel认为主节点失效才算失效
sentinel monitor master 192.168.1.11 6379 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值