哨兵模式,集群搭建,java整合等内容讲解
树图思维导图提供 Redis第四课内容讲解脑图 在线思维导图免费制作,点击“编辑”按钮,可对 Redis第四课内容讲解脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:4a8369b9c9e59f04ce0af18c508c5dec
Redis-04思维导图模板大纲
实际 真实集群环境
redis主节点占用一个linux服务器,从节点占用一个linux服务器。
远端地址不同
学习(伪集群环境)
在一个linux服务器中,通过配置,进行主从复制
端口号不同
复制三分redis.conf配置文件
修改三个redis.conf配置文件
pidfile /var/run/redis.pid 要修改 三个配置要区分开
port 6379 要修改
dbfilename dump.rdb 要修改 三个配置要区分开
appendonly no 都改成no
主从密码设置
. 一主二从的演示
启动三台redis服务
如果远程连接,注意防火墙端口放行。
info replication查看每一台机器的状态,可以看到6379为主机,6380 和6381为从机。
主机可以进行读和写的操作
从机不能进行写操作 但是可以进行读的操作
配置redis的传递
主从复制进行高可用操作,是手动进行了的,不太方便,引入哨兵模式, 可以实现自动高可用操作。
哨兵在高可用操作的时候,会动态的自动修改redis.conf
哨兵在高可用操作的时候,会动态的自动修改redis.conf 实际就是高可用的自动版
启动一主二从的所有reids ./redis-sentinel sentinel.conf 启动哨兵模式 shutdown掉 主机 , 过一会会发现 有一台从机称为主机
redis-cli需要重新连接
重新启动6379,会发现6379会作为从机存在。
3.1. 引入相关jar包
使用Java代码连接Redis
Spring整合Redis使用连接池
.1. 使用Maven搭建SSM项目
2. 引入Redis相关的Maven依赖
4. 编写Spring整合Redis的配置文件
编写Controller类进行测试
注意实体类要进行序列化操作,同时要生成序列化ID。
5. Spring整合Redis集群的配置
. 使用Maven搭建SSM框架
编写Spring整合Redis集群的配置文件
编写Controller类进行测试
redis集群的特点
Redis Cluster是Redis的内置集群,在Redis3.0推出的实现方案。在 Redis3.0之前是没有这个内置集群的。
Redis Cluster是无中心节点的集群 架构
集群中的每个节点都是平等的关系,都是对等的,每个节点都保存 各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这 些连接保持活跃,这样就保证了我们只需要连接集群中的任意一个节点, 就可以获取到其他节点的数据。
redis集群的搭建
6.1. redis缓存使用流程
缓存穿透
概念
缓存穿透是指查询缓存和数据库中都不存在的数据。比如id为-1的数据。
解决方案
缓存空值:当第一次请求时,数据不存在 Redis 也不存在数据库的时 候,设置一个缺省值(比如:None)。当后续再次进行查询则直接返 回空值或者缺省值
最常用
布隆过滤器:在数据写入数据库的同时将这个 ID 同步到到布隆过滤器 中,当请求的 id 不存在布隆过滤器中则说明该请求查询的数据一定没 有在数据库中保存,就不要去数据库查询了。
缓存雪崩
概念
是指在某一个时间段,redis缓存的数据集中全部过期失效,在缓存集中失 效的这个时间段对数据的访问查询,都落到了数据库上,对于数据库而 言,就会产生周期性的压力。
2. 解决方案
随机设置key失效时间,避免大量key集体失效
最常用
不设置过期时间(不推荐)。
用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进 行读写。
跑定时任务,在缓存失效前刷进新的缓存。
缓存击穿
概念
指一个Key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访 问,当这个Key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据 库,就像在一个完好无损的桶上凿开了一个洞。
解决方案
预先把热门数据提前存入 Redis 中,并设热门数据的过期时间超大值。
使用分布式锁,当发现缓存失效的时候,不是立即从数据库加载数据。 而是先获取分布式锁,获取锁成功才执行数据库查询和写数据到缓存的 操作,获取锁失败,则说明当前有线程在执行数据库查询操作,当前线 程睡眠一段时间在重试。这样只让一个请求去数据库读取数据。