当前位置: 首页 > news >正文

SpringBoot集成Redis Cluster集群(附带Linux部署Redis Cluster高可用集群)

目录

    • 一、前言
    • 二、集成配置
      • 2.1、POM
      • 2.2、添加配置文件application.yml
      • 2.3、编写配置文件
      • 2.4、编写启动类
      • 2.5、编写测试类测试是否连接成功

一、前言

这里会使用到spring-boot-starter-data-redis包,spring boot 2的spring-boot-starter-data-redis中,默认使用的是lettuce作为redis客户端,也推荐使用lettuce,Redis使用哨兵集群,这里会通过lettuce连接到哨兵获取对应Redis节点地址从而操作Redis。

Linux部署Redis Cluster高可用集群:https://blog.csdn.net/weixin_44606481/article/details/134052367

二、集成配置

工程结构
在这里插入图片描述

2.1、POM

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--springboot中的redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- lettuce pool 缓存连接池--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><!-- 使用jackson作为redis数据序列化 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.11.4</version></dependency><!-- SpringBoot测试包 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

2.2、添加配置文件application.yml

因为我们用的spring-boot-starter-data-redis包会自动配置redis连接,在配置文件中添加对应配置即可

spring:#redis配置信息redis:## Redis数据库索引(默认为0)database: 0## Redis服务器连接密码(默认为空)password: 123456## 连接超时时间(毫秒)timeout: 5000## 集群配置cluster:### 集群中所有节点nodes:- 172.16.8.186:7001- 172.16.8.186:7002- 172.16.8.186:7003- 172.16.8.186:7004- 172.16.8.186:7005- 172.16.8.186:7006### 最大重定向数,最好为集群节点数,比如第一台挂了,连第二台,第二台挂了连第三台,这个是重新连接的最大数量max-redirects: 6lettuce:pool:## 连接池最大连接数(使用负值表示没有限制)max-active: 8## 连接池最大阻塞等待时间(使用负值表示没有限制)max-wait: -1## 连接池中的最大空闲连接max-idle: 8## 连接池中的最小空闲连接min-idle: 1## 集群配置cluster:refresh:# 支持集群拓扑动态感应刷新,自适应拓扑刷新是否使用所有可用的更新,默认false关闭,类似nacos定时刷新服务列表adaptive: true# 定时刷新时间 毫秒period: 2000# 打印lettuce debug日志,方便查看读写分离效果
logging:pattern:console: '%date{yyyy-MM-dd HH:mm:ss.SSS} | %highlight(%5level) [%green(%16.16thread)] %clr(%-50.50logger{49}){cyan} %4line -| %highlight(%msg%n)'level:root: infoio.lettuce.core: debugorg.springframework.data.redis: debug

2.3、编写配置文件

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.lettuce.core.ReadFrom;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.*;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;import java.util.HashSet;@Configuration
public class RedisConfig{/*** retemplate相关配置,配置自定义序列化规则为jackson*/@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();// 配置连接工厂template.setConnectionFactory(factory);//使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om = new ObjectMapper();// 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和publicom.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);// 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jacksonSeial.setObjectMapper(om);// 值采用json序列化template.setValueSerializer(jacksonSeial);//使用StringRedisSerializer来序列化和反序列化redis的key值template.setKeySerializer(new StringRedisSerializer());// 设置hash key 和value序列化模式template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(jacksonSeial);template.afterPropertiesSet();return template;}
}

2.4、编写启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class LettuceApplication {public static void main(String[] args) {SpringApplication.run(LettuceApplication.class);}
}

2.5、编写测试类测试是否连接成功

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)
@SpringBootTest(classes =  LettuceApplication.class)
public class LettuceTest {@Autowiredprivate RedisTemplate<String,Object> redisTemplate;@Testpublic void t1(){String key = "key1";System.out.println("插入数据到redis");redisTemplate.opsForValue().set(key,"value1");Object value = redisTemplate.opsForValue().get(key);System.out.println("从redis中获取到值为 "+value);Boolean delete = redisTemplate.delete(key);System.out.println("删除redis中值 "+delete);}
}

相关文章:

SpringBoot集成Redis Cluster集群(附带Linux部署Redis Cluster高可用集群)

目录 一、前言二、集成配置2.1、POM2.2、添加配置文件application.yml2.3、编写配置文件2.4、编写启动类2.5、编写测试类测试是否连接成功 一、前言 这里会使用到spring-boot-starter-data-redis包&#xff0c;spring boot 2的spring-boot-starter-data-redis中&#xff0c;默…...

LLaVA:visual instruction tuning

对近期一些MLLM(Multimodal Large Language Model)的总结 - 知乎本文将从模型结构&#xff0c;训练方法&#xff0c;训练数据&#xff0c;模型表现四个方面对近期的一些MLLM&#xff08;Multi-modal Large Language Models&#xff09;进行总结并探讨这四个方面对模型表现的影响…...

Python实现双目标定、畸变矫正、立体矫正

一&#xff0c;双目标定、畸变矫正、立体矫正的作用 双目目标定&#xff1a; 3D重建和测距&#xff1a;通过双目目标定&#xff0c;您可以确定两个摄像头之间的相对位置和朝向&#xff0c;从而能够根据视差信息计算物体的深度&#xff0c;进行三维重建和测距。姿态估计&#xf…...

showdoc 文件上传 (cnvd-2020-26585)

showdoc 文件上传 &#xff08;cnvd-2020-26585&#xff09; 描述 ShowDoc是一个非常适合IT团队的在线API文档、技术文档工具。通过showdoc&#xff0c;你可以方便地使用markdown语法来书写出美观的API文档、数据字典文档、技术文档、在线excel文档等等。 api_page存在任意文…...

Java数据类型,变量与运算符

1.字面常量 常量是在程序运行期间&#xff0c;固定不变的量称为常量。 public class HelloWorld{public static void main(String[] args){System.out.println("Hello,world");} } 在以上程序中&#xff0c;输出的Hello Word&#xff0c;其中的“Hello Word”就是…...

Linux nm命令

Linux的nm命令主要用于列出对象文件中的符号。以下是一些使用示例&#xff1a; 基本用法&#xff1a;只需运行’nm’命令&#xff0c;并将对象文件的名称作为输入传递给它。例如&#xff0c;我使用’nm’命令与’apl’elf 文件&#xff1a;nm apl。 在输出中为每个符号前面添加…...

iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法

摘要&#xff1a; 本文将以iOS技术博主身份&#xff0c;分享解决使用无密码的.p12文件发布应用时遇到的问题&#xff0c;并介绍如何以带密码的方式重新导出.p12文件的方法。通过本文提供的步骤&#xff0c;开发者可以顺利完成证书的发布流程。 引言 在iOS应用发布过程中&…...

OpenCamera拍照的代码流程

按理来说&#xff0c;拍照应该是很简单的。随着功能的复杂&#xff0c;代码也是越来越多&#xff0c;流程越来越长。想看看地理位置是怎么保存的&#xff0c;于是就研究了一下OpenCamera的拍照流程。在回调时有点乱。 MainActivity clickedTakePhoto() takePicture() takePic…...

华为OD机考算法题:矩阵最大值

题目部分 题目矩阵最大值难度难题目说明给定一个仅包含 0 和 1 的 N*N 二维矩阵&#xff0c;请计算二维矩阵的最大值&#xff0c;计算规则如下&#xff1a; 1. 每行元素按下标顺序组成一个二进制数&#xff08;下标越大越排在低位&#xff09;&#xff0c;二进制数的值就是该行…...

【Javascript】函数之形参与实参

function c(a,b){return ab;}var sumc(3,4);console.log(sum);a,b为形参 3,4为实参 形参和实参是⼀⼀对应的数量可以不对应参数的类型不确定函数可以设置默认参数实参可以是字⾯量也可以是变量...

PAT 乙级1090危险品装箱

题目&#xff1a; 集装箱运输货物时&#xff0c;我们必须特别小心&#xff0c;不能把不相容的货物装在一只箱子里。比如氧化剂绝对不能跟易燃液体同箱&#xff0c;否则很容易造成爆炸。 本题给定一张不相容物品的清单&#xff0c;需要你检查每一张集装箱货品清单&#xff0c;…...

Response Header中不暴露Server(IIS)版本、ASP.NET及相关版本等信息

ASP MVC开发的Web默认情况下会在请求的回应中暴露Server、X-AspNet-Version、X-AspNetMvc-Version、X-Powered-By等相关服务端信息&#xff0c;公开这些敏感信息会存在一定的安全风险。 X-SourceFiles标头用于被IIS / IIS Express中某些调试模块理解&#xff0c;它包含到磁盘上…...

测试C#调用Vlc.DotNet组件播放视频

除了Windows Media Player组件&#xff0c;在百度上搜索到还有不少文章介绍采用Vlc.DotNet组件播放视频&#xff0c;关于Vlc.DotNet的详细介绍见参考文献1&#xff0c;本文学习Vlc.DotNet的基本用法。   VS2022中新建基于.net core的winform程序&#xff0c;在Nuget包管理器中…...

JS的事件委托(Event Delegation)

✨ 事件委托&#xff08;Event Delegation&#xff09;及其优势和缺点 &#x1f383; 什么是事件委托 事件委托是一种在JavaScript中处理事件的技术。它利用了事件的冒泡机制&#xff0c;将事件处理程序绑定到它们的共同祖先元素上&#xff0c;而不是直接绑定到每个子元素上。…...

selenium+python自动化安装驱动 碰到的问题

刚开始使用谷歌驱动&#xff0c;我的谷歌浏览器版本是最新版下载驱动地址&#xff0c;访问不了。 Chrome for Testing availability只能使用火狐驱动&#xff0c;我这里的火狐版本也是最新版119.0 查找全网找到驱动geckodriver下载地址 https://mirrors.huaweicloud.com/ge…...

laravel+vue2 element 一套项目级医院手术麻醉信息系统源码

手术麻醉临床信息系统源码&#xff0c;PHPmysqllaravelvue2 手术麻醉临床信息系统&#xff0c;采用计算机和通信技术&#xff0c;实现监护仪、麻醉机、输液泵等设备输出数据的自动采集&#xff0c;采集的数据能够如实准确地反映患者生命体征参数的变化&#xff0c;并实现信息高…...

GEE——使用MODIS GPP和LAI数据进行一元线性回归计算和R2分析

使用两种方法计算一元线性回归,一种使用GEE本身自带的函数,另一种使用自己编写代码的方式进行,对比两者结果的差异。 简介 一元线性趋势分析是指利用一元线性回归模型来分析一组数据的趋势性。在一元线性回归模型中,我们假设自变量(x)和因变量(y)之间存在一定的线性关…...

[论文阅读]Point Density-Aware Voxels for LiDAR 3D Object Detection(PDV)

PDV Point Density-Aware Voxels for LiDAR 3D Object Detection 论文网址&#xff1a;PDV 论文代码&#xff1a;PDV 简读论文 摘要 LiDAR 已成为自动驾驶中主要的 3D 目标检测传感器之一。然而&#xff0c;激光雷达的发散点模式随着距离的增加而导致采样点云不均匀&#x…...

自动化学报格式 Overleaf 在线使用 【2023最新教程】

自动化学报格式 Overleaf 在线使用 摘要 2023年10月26日19:28:17&#xff08;云南昆明&#xff09; 今天课程老师要我们期末提交一篇论文&#xff0c;以自动化学报格式提交。因此&#xff0c;去官网发现只有 latex 格式&#xff0c;下载下来发现各种格式不兼容&#xff1b;由于…...

掌握CSS动画技巧:打造引人注目的页面过渡效果!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一…...

从UDP到串口:ROS与STM32无线通信方案的实战选型与优化

1. 为什么需要无线通信方案 在机器人开发中&#xff0c;上位机&#xff08;通常是运行ROS的PC或开发板&#xff09;与下位机&#xff08;如STM32等单片机&#xff09;的通信是基础但关键的一环。我最近在做一个小车项目时&#xff0c;就深刻体会到了通信方案选型的重要性。最初…...

Shox96 Progmem:嵌入式Flash短字符串高效压缩方案

1. Shox96 Progmem 压缩库技术解析&#xff1a;面向嵌入式 Flash 的短字符串高效压缩方案1.1 工程背景与设计动因在资源受限的嵌入式系统中&#xff0c;Flash 存储空间始终是关键瓶颈。以典型 Cortex-M0/M3 MCU&#xff08;如 STM32F072、nRF52832&#xff09;为例&#xff0c;…...

自动驾驶控制-PIDLQR控制路径跟踪仿真 Simulink和Carsim联合仿真,横向控制...

自动驾驶控制-PID&LQR控制路径跟踪仿真 Simulink和Carsim联合仿真&#xff0c;横向控制为前馈反馈lqr&#xff0c;纵向为位置-速度双PID控制 对于减小误差&#xff0c;可以联合后轮转向/四轮转向算法&#xff08;小店中有&#xff09; 下图为Simulink模型截图&#xff0c;跟…...

OpenClaw技能组合:Qwen3-4B串联多个自动化模块完成复杂任务

OpenClaw技能组合&#xff1a;Qwen3-4B串联多个自动化模块完成复杂任务 1. 为什么需要技能组合&#xff1f; 去年我接手了一个数据分析项目&#xff0c;需要每周从三个不同来源收集数据&#xff0c;清洗后生成可视化报告。最初我手动执行这些步骤&#xff0c;每次耗时近3小时…...

Token火了,一文读懂词元经济产业链

“词元&#xff08;Token&#xff09;是新的大宗商品。”在英伟达2026年度开发者大会&#xff08;GTC&#xff09;上&#xff0c;英伟达创始人兼CEO黄仁勋首次提出词元经济。 黄仁勋提出一个公式&#xff1a;收入每瓦词元数可用千兆瓦数。他解释称&#xff0c;数据中心如今已经…...

计算机毕业设计springboot在线阅读平台的设计与实现 基于SpringBoot的数字化图书阅读与积分兑换服务平台 SpringBoot框架下的网络文献资源管理与读者互动系统

计算机毕业设计springboot在线阅读平台的设计与实现 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着互联网技术的飞速发展和移动智能终端的普及&#xff0c;人们的阅读习惯…...

Mac鼠标滚轮优化神器:Mos让外接鼠标体验媲美原生触控板的完整指南

Mac鼠标滚轮优化神器&#xff1a;Mos让外接鼠标体验媲美原生触控板的完整指南 【免费下载链接】Mos 一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A lightweight tool used to smooth scrolling and set scroll direction inde…...

Hermes社区贡献指南:如何参与项目开发和提交PR

Hermes社区贡献指南&#xff1a;如何参与项目开发和提交PR 【免费下载链接】hermes Golang package that generates clean, responsive HTML e-mails for sending transactional mail 项目地址: https://gitcode.com/gh_mirrors/he/hermes 想要为Hermes电子邮件生成库贡…...

突破城市交通治理瓶颈:SZT-bigdata实时客流分析系统的技术革新与实战价值

突破城市交通治理瓶颈&#xff1a;SZT-bigdata实时客流分析系统的技术革新与实战价值 【免费下载链接】SZT-bigdata 深圳地铁大数据客流分析系统&#x1f687;&#x1f684;&#x1f31f; 项目地址: https://gitcode.com/gh_mirrors/sz/SZT-bigdata 深圳地铁大数据客流分…...

AQRC智金未来:全球资产配置的算法革命已来

在康涅狄格州的格林威治&#xff08;Greenwich&#xff09;&#xff0c;清晨的咖啡总是伴随着全球市场的开盘。这里不仅是顶级对冲机构的“隐居地”&#xff0c;更是AQRC智金未来核心策略的孵化场。很多人习惯于讨论涨跌&#xff0c;但对于智金未来而言&#xff0c;最迷人的数字…...