目录
分布式缓存
Redis 持久化
RDB持久化
基本配置:
原理
配置文件的配置:
SNAPSHOTTING下面进行配置:
异步底层原理:
大致原理:
执行bgsave时,首先进行fork复制页表给子进程,子进程得到页表开始写入磁盘进行操作,而此时如果主进程有需要对数据进行写入操作,为了防止出现脏读的情况,fork采取的copy-on-write。就是将数据设置为只读的模式,主进程要操作数据只能先复制一份进行写入操作,后续执行完在移入到数据之中。
总结:
AOF持久化:
存放原理:
基本配置:
优化策略:
由于记录的时 修改的命令,有一个值同时被修改几次,他都会进行记录,会导致,记录了一些没用的命令,于是有了一个重写的功能,使得指令进行简化:
RDB&AOF 两者对比:
AOF&RDB混合模式:
开启配置:
首先开启混合模式的前提时要开启AOF模式
配置文件:aof-use-rdb-preamble yes
默认就是yes
基本原理:
Redis服务器 在执行 AOF重写操作时,就会像执行BGSAVE命令那样,根据数据库当前的状态 生成出 相应的RDB数据,并将这些数据 写入 新建的AOF文件中,至于那些 在AOF重写开始之后 执行的Redis命令,则会继续以协议文本的方式 追加到 新AOF文件的末尾,即已有的RDB数据的后面。
此时的AOF文件的格式:是由ROB+AOF进行组成的
进行回复数据时,首先判断是否有ROB文件,有则使用,然后再使用AOF文件进行回复。
Redis 主从:
如何搭建:
文档免费下载
浅说一下:
就是在对应的从节点登录然后 使用命令链接你的主节点即可:
# 执行slaveof
slaveof 192.168.150.101 7001
然后从节点不能进行写操作,只能进行读操作。
数据同步原理:
全量同步
几个关键词:
实际的原理:
全量同步总结
增量同步:
由于一些问题导致,从机宕机等情况的产生,就需要使用增量同步进行操作了。只需要根据 repl——baklog里面的类容和存放的offset进行数据的回复即可。
注意: repl-baklog的数据结构是类似与环形的结构。
以下由两种情况,
**第一种:**从机宕机时间不长 欠的的债不多可以进行恢复,此时还是进行的增量同步。
**第二种:**从机宕机的时间很长,已经过了一圈,无法进行回复。此时只能采取全量同步。
避免全量同步:
全量&增量总结:
Redis 哨兵机制
由于上述的主从机制存在一些关键问题:
比如,主节点宕机了,那集群就无法进行写操作了。因为从节点只能进行读操作。由此采用哨兵机制,从从节点里面,选取一个来当主节点即可。
哨兵作用及原理:
作用:
监控的原理:
选举的原理:
故障的转移:
总结:
哨兵集群的搭建:
文档免费下载
浅说一下:
就是配置一下就好了,剩下的交给他自动进行选举和故障替换
与Java进行联系
引入依赖:
配置yaml:
spring:
redis:
sentinel:
master: mymaster
nodes:
- 192.168.254.138:27001
- 192.168.254.138:27002
- 192.168.254.138:27003
注入属性:
测试代码:
测试结果:
就算主机宕机,也能正常的自动取寻找到读写操作的机器。
Redis分片集群
分片的原理:
很好理解就是,多搞几个主节点,从节点,每个主节点存放不同的数据:
搭建分片集群:
散列插槽
就有点想hash一样,通过计算key的hash 然后取余,存放到相应的位置,到时候要取值的时候,也进行相应的操作即可。
这是进行定向的转发(如果分配到其他的主机上面的话)