04 2024 档案
摘要:传统缓存的问题 传统的缓存策略一般是请求到达Tomcat后,先查询redis,如果未命中则查询数据库,存在下面的问题: l 请求要经过tomcat处理,tomcat的性能成为整个系统的瓶颈 l Redis缓存失效时,会对数据库产生冲击 多级缓存方案 多级缓存就是充分利用请求处理的每个环节,分别添加缓
阅读全文
摘要:故障转移 当集群中有一个master宕机会发生什么呢? 宕机7002节点,这是宕机之前的状态 这是宕机以后的状态,7002失去连接了,而7002的slave8003变成了master 启动以后7002变成slave了 Reids集群不需要sentinel,自动具有主从故障切换 以上是自动故障转移 数
阅读全文
摘要:集群伸缩 添加一个节点到集群: Redis-cli--cluster提供了很多操作集群的命令,可以通过下面方式查看: 比如,添加节点的命令 先输入新增的ip和端口号,后输入集群已经有的ip和端口号好指定添加到哪个集群。默认是增加master节点,加上--cluster-slave是变成了slave。
阅读全文
摘要:散列插槽 Redis会把每一个master节点映射到0~16383共16284个插槽(hash slot)上,查看集群信息时就能看到: 数据key不是与节点绑定,而是与插槽绑定。Reids会根据key的有效部分计算插槽值,分两种情况: l Key中包含“{}”,且“{}”中至少包含1个字符,“{}”
阅读全文
摘要:分片集群结构 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决: l 海量数据存储问题 l 高并发写的问题 使用分片集群可以解决上述问题,分片集群特征: l 集群中有多个master,每个master保存不同数据,因此能存多少取决于master节点的数量,解决了海量数据存储的问题
阅读全文
摘要:在sentinel集群监管下的redis主从集群,其节点会因为自动故障转移而发生变化,redis的客户端必须感知这种变化,以及更新连接信息。Spring的redisTemplate底层利用lettuce实现了节点的感知和自动切换。
阅读全文
摘要:新建sentinel.conf文件。输入下面的内容 1是端口号 2是sentinel声明的ip 3是sentinel监控的master的ip和端口号,mymaster是集群的名字,也可以理解成给主节点起的名字,可以任意起名字。Slave的信息是从master得到的。2是选举master时的quoru
阅读全文
摘要:哨兵的作用 Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。哨兵的结构和作用如下: 服务状态监控 Sentinel基于心跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令。 l 主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。
阅读全文
摘要:如果slave重启后同步,则执行增量同步 什么情况下无法做增量同步 repl_baklog是个数组,它会循环覆盖之前的数据。如果master记录的数量超出这个环,覆盖了slave的offset,找不到了,就只能去做全量同步了 可以从以下几个方面来优化redis主从集群: l 在master中配置re
阅读全文
摘要:数据同步原理 主从的第一次同步是全量同步: Master如何判断slave是不是第一次来同步数据?这里会用到两个很重要的概念: Replication id:简称replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slave则会继承master节点的r
阅读全文
摘要:搭建主从架构 单节点redis的并发能力是有上限的,要进一步提高redis的并发能力,就需要搭建主从集群,实现读写分离。 搭建主从的注意事项(仅注意,是否需要修改看实际情况) 端口修改 目录修改 也可以通过命令的方式修改文档 声明绑定实例ip 开启主从关系(不同服务器的情况下,可以直接执行这一步就行
阅读全文
摘要:AOF AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。 AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF: AOF的命令记录的频率也可以通过redis,conf文件来配: 从上到下是可靠性越来越
阅读全文
摘要:RDB RDB全程Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。 快照文件成为RDB文件,默认是保存在当前运行目录。 Redis停机时会
阅读全文
摘要:内存淘汰策略 内存淘汰:就是当Redis内存使用达到设置的阈值时,redis主动挑选部分key删除以释放更多内存的流程。 Redis会在处理客户端命令的方法processCommand()中尝试做内存淘汰: 也就是说,redis是在任何命令执行之前,做内存的检查或者说尝试去淘汰一部分内存。 Redi
阅读全文