springboot整合Redis哨兵

article/2025/11/5 5:10:58

1.1SpringBoot整合Redis哨兵
1.1.1入门案例

/*** 	哨兵测试* 	1.配置redis的节点数据集合*  2.利用哨兵机制连接redis节点.*  3.用户通过哨兵 实现缓存操作.*  *  参数1: masterName*/
@Test
public void testSentinel() {//配置哨兵的信息Set<String> sentinels = new HashSet<>();sentinels.add("192.168.226.128:26379");JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels);Jedis jedis = pool.getResource();jedis.set("1909","哨兵搭建成功!!!!");System.out.println(jedis.get("1909"));jedis.close();
}

1.1.2编辑properties文件

redis.sentinel=192.168.226.128:26379
//标识配置类信息
@Configuration

1.1.3编辑RedisConfig配置类

@PropertySource("classpath:/properties/redis.properties")
public class RedisConfig {@Value("${redis.sentinel}")
private String sentinel;/*** 使用redis哨兵机制.实现redis缓存操作* */
@Bean
public JedisSentinelPool sentinelPool() {Set<String> sentinels = new HashSet<>();sentinels.add(sentinel);return new JedisSentinelPool("mymaster", sentinels);
}}

1.1.4修改CacheAOP
在这里插入图片描述
2Redis集群实现

1.1Redis集群

1.1.1为什么要搭建集群
通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。
Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿。
由于内存大小的限制,使用一台 Redis 实例显然无法满足需求,这时就需要使用多台 Redis作为缓存数据库。但是如何保证数据存储的一致性呢,这时就需要搭建redis集群.采用合理的机制,保证用户的正常的访问需求.
采用redis集群,可以保证数据分散存储,同时保证数据存储的一致性.并且在内部实现高可用的机制.实现了服务故障的自动迁移.

1.1.2集群搭建计划
主从划分:
3台主机 3台从机共6台 端口划分7000-7005

1.2集群搭建
1.2.1准备集群文件夹
1.准备集群文件夹

Mkdir cluster

2.在cluster文件夹中分别创建7000-7005文件夹
在这里插入图片描述
1.2.2复制配置文件
说明:
将redis根目录中的redis.conf文件复制到cluster/7000/ 并以原名保存

cp redis.conf cluster/7000/

1.2.3编辑配置文件
1.注释本地绑定IP地址
在这里插入图片描述
2.关闭保护模式
在这里插入图片描述
3.修改端口号
在这里插入图片描述
4.启动后台启动
在这里插入图片描述
5.修改pid文件
在这里插入图片描述
6.修改持久化文件路径
在这里插入图片描述
7.设定内存优化策略
在这里插入图片描述
8.关闭AOF模式
在这里插入图片描述
9.开启集群配置
在这里插入图片描述
10.开启集群配置文件
在这里插入图片描述
11.修改集群超时时间
在这里插入图片描述
1.2.4复制修改后的配置文件
说明:将7000文件夹下的redis.conf文件分别复制到7001-7005中
[root@localhost cluster]# cp 7000/redis.conf 7001/
[root@localhost cluster]# cp 7000/redis.conf 7002/
[root@localhost cluster]# cp 7000/redis.conf 7003/
[root@localhost cluster]# cp 7000/redis.conf 7004/
[root@localhost cluster]# cp 7000/redis.conf 7005/

1.2.5批量修改
说明:分别将7001-7005文件中的7000改为对应的端口号的名称,
修改时注意方向键的使用
在这里插入图片描述
1.2.6通过脚本编辑启动/关闭指令
1.创建启动脚本 vim start.sh
在这里插入图片描述

2.编辑关闭的脚本 vim shutdown.sh
在这里插入图片描述
3.启动redis节点

sh start.sh

4.检查redis节点启动是否正常
在这里插入图片描述
1.2.7创建redis集群

#5.0版本执行 使用C语言内部管理集群
redis-cli --cluster create --cluster-replicas 1 192.168.35.130:7000 192.168.35.130:7001 192.168.35.130:7002 192.168.35.130:7003 192.168.35.130:7004 192.168.35.130:7005

在这里插入图片描述
在这里插入图片描述
1.2.8Redis集群高可用测试

1.关闭redis主机.检查是否自动实现故障迁移.
2.再次启动关闭的主机.检查是否能够实现自动的挂载.
一般情况下 能够实现主从挂载
个别情况: 宕机后的节点重启,可能挂载到其他主节点中(7001-7002) 正确的
在这里插入图片描述
1.3Redis集群原理
1.3.1Redis集群高可用推选原理
如图-24所示
在这里插入图片描述
原理说明:
Redis的所有节点都会保存当前redis集群中的全部主从状态信息.并且每个节点都能够相互通信.当一个节点发生宕机现象.则集群中的其他节点通过PING-PONG检测机制检查Redis节点是否宕机.当有半数以上的节点认为宕机.则认为主节点宕机.同时由Redis剩余的主节点进入选举机制.投票选举链接宕机的主节点的从机.实现故障迁移.

1.3.2Redis集群宕机条件

特点:集群中如果主机宕机,那么从机可以继续提供服务,
当主机中没有从机时,则向其它主机借用多余的从机.继续提供服务.如果主机宕机时没有从机可用,则集群崩溃.
答案:9个redis节点,节点宕机5-7次时集群才崩溃.
如图-25所示:
在这里插入图片描述
1.3.3Redis hash槽存储数据原理

说明: RedisCluster采用此分区,所有的键根据哈希函数(CRC16[key]&16383)映射到0-16383槽内,共16384个槽位,每个节点维护部分槽及槽所映射的键值数据.根据主节点的个数,均衡划分区间.
算法:哈希函数: Hash()=CRC16[key]%16383按位与
如图-26所示
在这里插入图片描述
当向redis集群中插入数据时,首先将key进行计算.之后将计算结果匹配到具体的某一个槽的区间内,之后再将数据set到管理该槽的节点中.
如图-27所示
在这里插入图片描述

Redis7000~~~0-5460
crc16(aaa)%16383 = 2000   redis7000.set("aaa","valuexxx");
crc16(bbb)%16383 = 2000  redis7000.set("bbb","valuexxx");

2.1SpringBoot整合redis集群

2.1.1入门案例

/*** redis集群测试案例*/
@Test
public void testCluster() {Set<HostAndPort> nodes = new HashSet<>();nodes.add(new HostAndPort("192.168.226.128",7000));nodes.add(new HostAndPort("192.168.226.128",7001));nodes.add(new HostAndPort("192.168.226.128",7002));nodes.add(new HostAndPort("192.168.226.128",7003));nodes.add(new HostAndPort("192.168.226.128",7004));nodes.add(new HostAndPort("192.168.226.128",7005));JedisCluster cluster = new JedisCluster(nodes);cluster.set("key", "redis集群搭建成功!!!!");System.out.println(cluster.get("key"));}

2.1.2编辑Properties文件

#配置redis集群
redis.nodes=192.168.226.128:7000,192.168.226.128:7001,192.168.226.128:7002,192.168.226.128:7003,192.168.226.128:7004,192.168.226.128:7005

2.1.3编辑RedisConfig

//标识配置类信息
@Configuration
@PropertySource("classpath:/properties/redis.properties")
public class RedisConfig {@Value("${redis.nodes}")
private String nodes; //node,node,node/*** 实现集群整合*/
@Bean
@Scope("prototype")
public JedisCluster jedisCluster() {Set<HostAndPort> setNodes = new HashSet<>();String[] arrayNodes = nodes.split(","); for (String node : arrayNodes) { //host:portString host = node.split(":")[0];int port = Integer.parseInt(node.split(":")[1]);HostAndPort hostAndPort = new HostAndPort(host, port);setNodes.add(hostAndPort);}return new JedisCluster(setNodes);
}
}

2.1.4编辑CacheAOP
在这里插入图片描述


http://chatgpt.dhexx.cn/article/DwQRT6oM.shtml

相关文章

Redis集群搭建的三种方式

一、Redis主从 1.1 Redis主从原理 和MySQL需要主从复制的原因一样&#xff0c;Redis虽然读取写入的速度都特别快&#xff0c;但是也会产生性能瓶颈&#xff0c;特别是在读压力上&#xff0c;为了分担压力&#xff0c;Redis支持主从复制。Redis的主从结构一主一从&#xff0c;一…

Redis集群搭建(非常详细)

https://blog.csdn.net/qq_42815754/article/details/82912130 redis集群搭建 在开始redis集群搭建之前&#xff0c;我们先简单回顾一下redis单机版的搭建过程 下载redis压缩包&#xff0c;然后解压压缩文件&#xff1b; 进入到解压缩后的redis文件目录&#xff08;此时可以看…

什么是TCN?

TCN&#xff08;Two-way communication network&#xff09;即双向通信网络。使用socks5技术&#xff0c;通过特定的中转服务器完成数据传输。 在服务器端部署完成后&#xff0c;用户需要按照指定的密码、加密方式和端口使用客户端软件与其连接。在成功连接到服务器后&#xff…

MS-TCN: Multi-Stage Temporal Convolutional Network for Action Segmentation

论文题目&#xff1a;Multi-Stage Temporal Convolutional Network for Action Segmentation 原文地址&#xff1a;https://arxiv.org/abs/1903.01945 这篇文章涉及的是视频的行为分割问题&#xff08;Action Segmentation&#xff09;&#xff0c;也就是对视频&#xff08;vi…

TCN时间卷积网络介绍

绪论 TCN, Temporal Convolutional Network,时间卷积网络&#xff0c;是一种能够处理时间序列数据的网络结构&#xff0c;论文还评为 2018年10大论文。 1. 模型 输入&#xff1a; x 0 , x 1 , . . . , x t {x_0, x_1,..., x_t} x0​,x1​,...,xt​ 输出&#xff1a; y 0 , …

TCN: TEMPORAL CONVOLUTIONAL NETWORKS

搬运自&#xff1a;Raushan Roy-TEMPORAL CONVOLUTIONAL NETWORKS Learning sequences efficiently and effectively Until recently the default choice for sequence modeling task was RNNs because of their great ability to capture temporal dependencies in sequenti…

【深度学习论文阅读】TCN:An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence

2018年人工智能十佳论文之一&#xff1a;TCN 论文地址&#xff1a;An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling 项目地址&#xff1a;TCN的github链接 文章目录 1. ABSTRACT2. INTRODUCTION & BACKGROUND2.1 Temporal…

wavenet及TCN

一切皆卷积——包括时序相关任务 1.wavenet1.1 wavenet的pytorch实现1.1.1 wavenet类1.1.2 ResidualConv1dGLU 1.2 wavenet在纳米孔测序中的应用 2.Temporal Convolutional Network&#xff08;TCN&#xff09;2.1 TCN模型介绍2.3 TCN代码实现及可视化 3.wavenet/TCN的优点参考…

时序模型(一)—— TCN 时间卷积网络

一、 概述 TCN是18年提出的时序卷积神经网络模型。 时序问题建模&#xff0c;通常采用RNN循环神经网络及其相关变种&#xff0c;比如LSTM、GRU等&#xff0c;这里将卷积神经网络通过膨胀卷积达到抓取长时依赖信息的效果&#xff0c;TCN在一些任务上甚至能超过RNN相关模型。 …

【学习日志】【TCN】时间序列卷积神经网络(1)

1. ask bing&#xff08;Temporal Convolutional Network&#xff09; 问&#xff1a;“我对CNN、RNN、TCN等神经网络没有任何基础&#xff0c;你能直观地给我讲一下TCN的结构、输入输出和原理吗&#xff1f;” bing对TCN的解释如下&#xff1a; TCN是一种用于处理序列数据的神…

LSTM的备胎,用卷积处理时间序列——TCN与因果卷积(理论+Python实践)

什么是TCN TCN全称Temporal Convolutional Network&#xff0c;时序卷积网络&#xff0c;是在2018年提出的一个卷积模型&#xff0c;但是可以用来处理时间序列。 卷积如何处理时间序列 时间序列预测&#xff0c;最容易想到的就是那个马尔可夫模型&#xff1a; P ( y k ∣ x…

python深度学习之TCN实例

1.TCN的介绍 近些年&#xff0c;关于时间序列、自然语言处理等任务大家一般都会想到RNN、LSTM、GRU&#xff0c;一维CNN以及后面延伸出的Bi-Lstm、ConvLstm等等&#xff0c;这是因为RNN天生可以记住以前时段的信息&#xff0c;而传统的神经网络并不具有这个功能。卷积神经网络…

时间卷积网络TCN:时间序列处理的新模型

这篇文章回顾了基于TCN的解决方案的最新创新。我们首先介绍了一个运动检测的案例研究&#xff0c;并简要回顾了TCN架构及其相对于传统方法的优势&#xff0c;如卷积神经网络(CNN)和递归神经网络(RNN)。然后&#xff0c;我们介绍了一些使用TCN的应用&#xff0c;包括改进交通预测…

TCN论文及代码解读总结

前言&#xff1a;传统的时序处理&#xff0c;普遍采用RNN做为基础网络模型&#xff0c;如其变体LSTM、GRU、BPTT等。但是在处理使用LSTM时时序的卷积神经网络 目录 论文及代码链接一、论文解读1、 摘要2、引言(摘)3、时序卷积神经网络(Temporal Convolutional Networks)3.1 因果…

轨道交通中TCN、TRDP、TSN的理解

轨道交通中TCN、TSN、TRDP的理解 1 TCN2 TSN3 TRDP———————————————————————— 1 TCN TCN&#xff08;Train Communication Network&#xff09;是列车通信网络&#xff0c;是列车通信网络的总称。 在IEC 61375-1 以及GB/T 28029.1中都详细的介绍了列车…

深度学习 + 论文详解: TCN_时间卷积网络_原理与优势

论文链接 TCN: https://arxiv.org/pdf/1803.01271.pdf p.s. TCN stands for Temporal Convolutional Network. 它是除了 RNN architecture 之外的第二种可以分析时间性数据的架构 更多文章将在公众号&#xff1a;AI 算法辞典 首发&#xff01; 前言 RNN 从最一开始发展以来…

【python量化】用时间卷积神经网络(TCN)进行股价预测

写在前面 下面这篇文章首先主要简单介绍了目前较为先进的时间序列预测方法——时间卷积神经网络&#xff08;TCN&#xff09;的基本原理&#xff0c;然后基于TCN的开源代码&#xff0c;手把手教你如何通过时间卷积神经网络来进行股价预测&#xff0c;感兴趣的读者也可以基于此模…

时域卷积网络(Temporal Convolutional Network,TCN)

TCN基本结构 时域卷积网络&#xff08;Temporal Convolutional Network&#xff0c;TCN&#xff09;由Shaojie Bai et al.在2018年提出的&#xff0c;可以用于时序数据处理&#xff0c;详细内容请看论文。 1.因果卷积&#xff08;Causal Convolution&#xff09; 因果卷积如上…

时域卷积网络TCN详解:使用卷积进行序列建模和预测

CNN经过一些简单的调整就可以成为序列建模和预测的强大工具 尽管卷积神经网络(CNNs)通常与图像分类任务相关&#xff0c;但经过适当的修改&#xff0c;它已被证明是进行序列建模和预测的有价值的工具。在本文中&#xff0c;我们将详细探讨时域卷积网络(TCN)所包含的基本构建块&…

TCN代码详解-Torch (误导纠正)

1. 绪论 TCN网络由Shaojie Bai&#xff0c; J. Zico Kolter&#xff0c; Vladlen Koltun 三人于2018提出。对于序列预测而言&#xff0c;通常考虑循环神经网络结构&#xff0c;例如RNN、LSTM、GRU等。他们三个人的研究建议我们&#xff0c;对于某些序列预测&#xff08;音频合…