Redis

                            相关知识点整理

一、概念
Redis是一个开源的,内存中的数据结构存储系统,可用作数据库、缓存和消息中间件。
在Linux系统安装将配置文件redis.conf中daemonize no改为yes让服务在后台启动。
Redis中五大数据类型:String、List、Hash(存储对象)、Set(无序集合,成员唯一)、ZSet(有序集合,唯一(分数除外))

二、Redis持久化
验证快照:dump.rdb文件(存储快照文件名称)
RDB(快照):save(同步,阻塞)与BGSAVE(异步,非阻塞,fork一个子线程负责备份操作,父进程继续处理客户端请求)命令
shutdown命令服务器会自动发送一条save命令来完成快照操作并在完成备份操作后关闭服务器
sync命令:在主从环境中,从节点要同步主节点的数据时会发送一条sync命令来开启一次复制,主节点会发送一条bgsave命令
来完成快照并在命令操作结束后将快照文件发送给从节点完成主从节点数据的同步
缺点:易造成数据丢失,若设置每五分钟保存一次快照,Redis因为某些原因不能正常工作,那从上次产生快照到出现问题这段时间的数据
就会丢失了。
AOF持久化:快照通过直接保存Redis的键值对数据,AOF是通过保存Redis执行的写命令来记录Redis的内存数据,根据保存的这些写命令,重新恢复Redis的内存状态,AOF利用这个原理来实现数据的持久化与数据的恢复。
Linux配置:appendonly no 改为yes||appendfilename “appendonly.aof”
BGREWRITEAOF命令会移除AOF文件中冗余的命令来重写AOF文件,使AOF文件的体积变得尽可能地小。
发布和订阅(观察者模式):SUBSCRIBE …(订阅) PSUBSCRIBE(模式订阅(模糊查询))PUBLISH…(发布)

为什么需要哨兵模式?
在主从复制模式的Redis系统中,从数据库在整个系统中起到了数据冗余备份和读写分离的作用,但是当数据库遇到异常中断服务,我们只能通过手动的方式选择一个从数据库来升格为主数据库,而哨兵模式可以解决麻烦的人工介入问题,实现自动化的系统监控和故障恢复。

哨兵的作用于理解:
监控Redis系统的运行状态:1.监控主数据库和从数据库是否正常运行 2.主数据库出现故障时自动将从数据库转换为主数据库
哨兵是一个独立的进程,在一主多从的Redis系统中,可以使用多个哨兵进行监控任务以保证系统的问题。

实现原理:哨兵启动后会与要监控的主数据库建立两条连接(连接1订阅“sentinel_:hello”频道的消息,连接2发送如下消息)
1.每10秒钟哨兵会向主数据库和从数据库发送INFO命令
2.每2秒钟哨兵会向主数据库和从数据库的_sentinel_:hello频道发送自己的消息
3.每1秒钟哨兵会向主数据库、从数据库和其他哨兵节点发送PING命令
INFO命令会返回当前数据库的相关信息(运行id,从数据的信息等)从而实现新节点的自动发现
配置哨兵只需要监控主数据库,INFO命令可以获取所有从数据库信息从而和从数据库建立连接(10秒更新)
哨兵向主从数据库的_sentinel_:hello频道发送信息来与同样监控该数据库的哨兵分享自己的信息(内容是哨兵和主数据库的地址端口ID等)
根据分享的信息可判断是否是新发现的哨兵,若是则将其加入已发现的哨兵列表并创建一个到其的PING连接(不会创建订阅频道的连接)
PING命令监控时间设置:down-after-milliseconds大于1秒便1秒发送一次PING命令,小于1秒便为指定的时间发送PING命令

主观下线与客观下线:
超过down-after-milliseconds指定时间后若被PING的数据库或节点未回复,哨兵认为其主观下线,若该节点是主数据库,哨兵会进一步判断是否需要进行故障恢复,发送SENTINEL is-master-down-by-addr 命令询问其他哨兵节点,达到指定数量便认为其客观下线,选举领头的哨兵节点对主从系统发起故障恢复,指定数量为quorum中配置的参数。

领头哨兵的选举:发现主数据库客观下线的哨兵节点(A)向每个哨兵节点发送命令要求对象选择自己成为领头哨兵
若目标哨兵节点没有选过其他人则会同样将A设置为领头哨兵,若A发现超过半数且超过quorum参数值的哨兵节点同样选择自己为领头哨兵
若多个哨兵节点参选,则会出现没有任何节点当选的可能,每个参选节点将等待一个随机事件重新发起参选请求进行下一轮选举直到成功

故障恢复:
领头哨兵将从停止服务的主数据库的从数据库挑选一个来充当新的主数据库(规则:优先级replica-priority,偏移量大优先,ID小优先)
选出一个从数据库后,领头哨兵将向从数据库发送SLAVEOF NO ONE命令使其升格为主数据库,而后领头哨兵向其他从数据库发送 SLAVEOF命令来使其成为新主数据库的从数据库,最后一步则是更新内部的记录,将已经停止服务的旧的主数据库更新为新的主数据库的从数据库,使得当其恢复服务时自动以从数据库的身份继续服务。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值