Spring Boot 集成 Redis

news2024/12/25 13:00:25

Spring Boot 集成 Redis

  • 一 集成Jedis
    • 1.1 Jedis
    • 1.2 集成步骤
      • 1.2.1 建Module
      • 1.2.2 改POM
      • 1.2.3 写YML
      • 1.2.4 主启动
      • 1.2.5 业务类
  • 二 集成lettuce
    • 2.1 lettuce
    • 2.2 lettuce Vs Jedis
    • 2.3 集成步骤
      • 2.3.1 改pom
      • 2.3.2 业务类
  • 三 集成RedisTemplate
    • 3.1 单机集成
      • 3.1.1 POM
      • 3.1.2 YML配置
      • 3.1.3 主启动
      • 3.1.4 业务类
    • 3.2 集群集成
      • 3.2.1 yml配置
      • 3.2.2 经典故障
      • 3.2.3 导致原因
      • 3.2.4 解决方案
      • 3.2.5 yml重新配置

一 集成Jedis

1.1 Jedis

Jedis Client是Redis官网推荐的一个面向Java客户端,库文件实现了对各类API进行封装调用。

1.2 集成步骤

1.2.1 建Module

1.2.2 改POM

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>4.3.1</version>
</dependency>

1.2.3 写YML

server:
	port: 7777
spring:
	application:
		name: redis7_seapp

1.2.4 主启动

@SpringBootApplication
public class Redis7Application{
	
	public static void main(String[] args){
		SpringApplication.run(Redis7Application.class,args);
	}

}

1.2.5 业务类

public class JedisDemo{
	
	public static void main(String[] args){
		
		//1.获得连接
		Jedis jedis = new Jedis("127.0.0.1",6379);
		//2. 进行密码验证
		jedis.auth("111111");
		//3.获得jedis客户端,进行redis访问
		System.out.println(jedis.pint());	

	}

}

二 集成lettuce

2.1 lettuce

是一个Redis的java驱动包

2.2 lettuce Vs Jedis

在这里插入图片描述

2.3 集成步骤

2.3.1 改pom

<dependency>
	<groupId>io.lettuce</groupId>
	<artifactId>lettuce-core</artifactId>
	<version>6.2.1.RELEASE</version>
</dependency>

2.3.2 业务类

public class LettuceDemo{
	
	public static void main(String[] args){
		
		//1.使用构建器链式编程来builder
		RedisURI uri = RedisURI.builder()
						.redis("127.0.0.1")
						.withPort(6379)
						.withAuthentication("default","111111")
						.build();
		//2. 创建连接客户端
		RedisClient redisClient = RedisClient.create(uri);
		StatefulRedisConnection conn = redisClient.connect();
		
		//3. 创建操作的command
		RedisCommands commands = conn.sync(); 
		
		//************************
			具体操作
		//************************


		//4. 关闭资源
		conn.close();
		redisClient.shutdown();

	}

}

三 集成RedisTemplate

3.1 单机集成

3.1.1 POM

<dependency>
	<groupId>org.springframework.boot</groupId>
	<atrifactId>spring-boot-starter-data-redis</atrifactId>
</dependency>

<dependency>
	<groupId>org.apache.commons</groupId>
	<atrifactId>commons-pool2</atrifactId>
</dependency>

<dependency>
	<groupId>io.springfox</groupId>
	<atrifactId>springfox-swagger2</artifactId>
	<version>2.9.2</version>
</dependency>

<dependency>
	<groupId>io.springfox</groupId>
	<atrifactId>springfox-swagger-ui</atrifactId>
	<version>2.9.2</version>
</dependency>

3.1.2 YML配置

spirng:
	redis:
		database: 0
		ip: 127.0.0.1
		port: 6379
		password: 111111
		lettuce:
			pool:
				max-active: 8
				max-wait: -1ms
				max-idle: 8
				min-idle: 0

3.1.3 主启动

@SpringBootApplication
public class Redis7Application{
	
	public static void main(String[] args){
		SpringApplication.run(Redis7Application.class,args);
	}

}

3.1.4 业务类

序列化问题:
键(key)和 值(value)都是通过Spring提供的Serializer序列化到数据库的。
RedisTemplate默认使用的是JdkSerializationRedisSerializer。
StringRedisTemplate默认使用的是StringRedisSerializer。

@Configuration
public class RedisConfig{

	@Bean
	public RedisTemplate<String,Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory){
		RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
		redisTemplate.setConnectionFactory(lettuceConnectionFactory);
		//设置key序列化方式string
		redisTemplate.setKeySerializer(new StringRedisSerializer());
		//设置value的序列化方式json,使用GenericJackson2JsonRedisSerializer替换默认序列化
		redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
		redisTemplate.setHashKeySerializer(new StringRedisSerializer());
		redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
		redisTemplate.afterPropertiesSet();
		
		return redisTemplate;
	}
}
		

3.2 集群集成

3.2.1 yml配置

spring:
	redis:
		password: 111111
		cluster:
			max-redirects: 3
			nodes: 192.168.111.175:6381,192.168.111.175:6382
		lettuce:
			pool:
				max-active: 8
				max-wait: -1ms
				max-idle: 8
				min-idle: 0

3.2.2 经典故障

Spring Boot 客户端没有动态感知到RedisCluster的最小集群信息。
在这里插入图片描述

3.2.3 导致原因

SpringBoot 2.X 版本,Redis默认的连接池采用Lettuce,当Redis集群节点发生变化后,Letture默认是不会刷新节点拓扑。

3.2.4 解决方案

刷新节点集群拓扑动态感应:

  • 调用RedisClusterClient.reloadPartitions
  • 后台基于时间间隔的周期刷新
  • 后台基于持续的断开和移动、重定向的自适应更新

3.2.5 yml重新配置

spring:
	redis:
		password: 111111
		cluster:
			max-redirects: 3
			nodes: 192.168.111.175:6381,192.168.111.175:6382
			#增加以下配置
			#支持集群拓扑动态感应刷新,自适应拓扑刷新是否使用所有可用的更新,默认false关闭。
			refresh:
				adaptive: true
				#定时刷新
				period: 2000
		lettuce:
			pool:
				max-active: 8
				max-wait: -1ms
				max-idle: 8
				min-idle: 0
			

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/535318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

terrapos处理pospac数据(二)

上篇&#xff08;参考文献2&#xff09;说到terrapos不能处理pospac中的GPS数据&#xff0c;博主猜测可能的原因是没有记录主天线、方向天线和差分天线的原始数据&#xff0c;但是&#xff0c;即使记录这三种原始数据&#xff0c;当从pospac中提取IMU和GPS数据的时候&#xff0…

macOS Ventura 13.4 RC3(22F66)发布

系统介绍 5 月 17 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.4 RC 3 更新&#xff08;内部版本号&#xff1a;22F66&#xff09;&#xff0c;本次更新距离上次发布隔了 5 天。 macOS Ventura 带来了台前调度、连续互通相机、FaceTime 通话接力等功能。其中&…

我和C++的故事---第一次见面.

&#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f3e0;学习社区&#xff1a;夏目友人帐. 文章目录 前言一、第一个C程序二、C 关键字(C98)三、命名空间1、命名空间的定义2、命名空间的使用3、命名空间的三种展开方式 四、C输入&&输出&&换行1、…

doxygen: 在Windows上源码编译

文章目录 1. 目的2. 思路3. 安装 Chocolatey4. 用 choco 安装 bison 和 flex安装 gs:安装 libiconv 5. 编译报错 1. 目的 在 windows 上源码编译 doxygen&#xff0c; 改代码加功能。 2. 思路 doxygen 依赖 flex 和 bison&#xff0c; 手动编译 flex 和 bison 很麻烦可以用…

孤独患者的树洞?AI情感陪伴是如何实现的?

一、人工智能大模型 自ChatGPT发布以来&#xff0c;越来越多的中国企业和研究机构扎堆冲入AI大模型赛道&#xff0c;试图在自然语言处理、机器翻译、问答等方面取得重大突破。在未来&#xff0c;这些模型有机会应用于金融、医疗、电商等各领域。 人工智能大模型的应用不仅可以…

矿山电子封条 yolov8网络模型

矿山电子封条通过yolov8网络模型利用AI图像智能视频识别等技术&#xff0c;矿山电子封条yolov8网络模型智能分析异常情况&#xff0c;包括不限于人数变化情况、出入井人员以及相关现场设备开停状态进行自动全天候远程监控。YOLOv8 主要参考了最近提出的诸如 YOLOX、YOLOv6、YOL…

为什么Windows/Linux 的端口数量最大限制为65535?

端口0&#xff1a;一般是用来表示所有端口&#xff0c;即1–65535。另外其他答主也提到1–1024是知名端口号&#xff0c;但那是很久以前数据&#xff0c;是该更新了。举几个大于1024的知名端口号&#xff1a;1614/1615&#xff1a;思科ISE用于AAA的端口号1812/1813&#xff1a;…

【腾讯云 Finops Crane 集训营】基于 Kubernetes 实现云资源分析与成本优化平台

基于 Kubernetes 实现云资源分析与成本优化平台 一、基本介绍1.主要功能2.整体架构 二、基于 Kubernetes 实现云资源分析与成本优化平台1.准备工作2.安装 Prometheus/Grafana 软件包3.安装 Crane 软件包4. 使用智能弹性 EffectiveHPA4.配置集群 三、功能验证1.成本展示2.资源推…

3分钟了解FactoryBean的作用和底层工作原理

大家好&#xff0c;我是冰点&#xff0c;本节我们通过对FactoryBean 接口源码解析&#xff0c;以及使用示例剖析&#xff0c;让大家3分钟了解FactoryBean的作用和底层工作原理。以及FactoryBean的使用场景&#xff0c;学以致用。 FactoryBean是Spring框架中的一个接口&#xf…

基于 resnet 对 CIFAR-10 图片进行分类和网络微调

本文基于李沐老师的 实战 Kaggle 比赛&#xff1a;图像分类 (CIFAR-10) 文章目录 数据格式数据加载标签转化划分数据集查看数据搭建网络主训练函数网络训练 数据格式 CIFAR-10 下载地址&#xff1a;https://www.kaggle.com/competitions/cifar-10/data 下拉到最下面有一个 Do…

JavaScript中的Event(事件)详解

Event 对象 Event 对象代表事件的状态&#xff0c;比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。 事件通常与函数结合使用&#xff0c;函数不会在事件发生前被执行&#xff01; 事件句柄 (Event Handlers) HTML 4.0 的新特性之一是能够使 HTML 事…

Maven uber-jar(带依赖的打包插件)maven-shade-plugin

文章目录 最基础的 maven-shade-plugin 使用生成可执行的 Jar 包 和 常用的资源转换类包名重命名打包时排除依赖与其他常用打包插件比较 本文是对 maven-shade-plugin 常用配置的介绍&#xff0c;更详细的学习请参照 Apache Maven Shade Plugin 官方文档 通过使用 maven-shade…

BetaFlight飞控启动运行过程简介疑问跟踪

BetaFlight飞控启动&运行过程简介疑问跟踪 1. 源由2. 【已解存疑】问题一&#xff1a;6.1 Why desiredPeriodCycles is so important to Betaflight task?3. 【已解】问题二&#xff1a;6.2 What root cause has made gyro task to been overrun, so scheduler has to ski…

轮式机械臂小车实现语音控制

1. 功能说明 本文实例将实现语音控制R214e样机运动&#xff08;前进、后退、左转、右转、拿起、放下&#xff09;的功能。 2. 电子硬件 在这个示例中&#xff0c;我们采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#x…

港科夜闻|推进湾区产学研融合发展,香港科大(广州)—广州市属国企校企合作专题交流会圆满举行...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、推进湾区产学研融合发展&#xff0c;香港科大(广州)—广州市属国企校企合作专题交流会圆满举行。本次交流会由香港科大(广州)、广州市人民政府国有资产监督管理委员会主办&#xff0c;越秀集团协办&#xff0c;旨在充分发…

springboot+jsp网上图书商城销售系统java

开发环境 开发语言&#xff1a;Java 框架&#xff1a;springboot 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven…

ubuntu 20.04虚拟内存

ubuntu 20.04虚拟内存 1. 查看自己的虚拟内存 使用top命令或者使用free命令 2. 创建虚拟内存配置文件 # 新建文件夹 cd ~ mkdir swap cd swap# bs 为块的大小&#xff0c;count 创建多少个块 sudo dd if/dev/zero ofswapfile bs1M count2048# 修改权限 sudo chmod 0600 …

系统分析师:六、企业信息化战略与实施 练习题

目录 1、十二五的七大国家战略新兴产业体系 2、标准化的三个方面 3、信息的属性 4、电子政务描述 5、数据产品管理 6、企业门户 7、企业应用集成 8、电子商务标准体系 9、电子商务标准范畴 10、知识管理显性和隐形知识 11、决策支持系统 12、CRM解决方案 13、CRM核…

用Vue写教务系统学生管理

文章目录 一.首先创建新的Demo二.在APP里面绑定DemoStudent三.源码附上四.效果图&#xff08;新增记录还未实现&#xff09; 一.首先创建新的Demo 二.在APP里面绑定DemoStudent <template><img alt"Vue logo" src"./assets/logo.png"><!--…

华为OD机试真题 Java 实现【最小的调整次数】【2023Q1 100分】

一、题目描述 有一个特异性的双端队列&#xff0c;该队列可以从头部或尾部添加数据&#xff0c;但是只能从头部移出数据。 小A依次执行2n个指令往队列中添加数据和移出数据。 其中n个指令是添加数据 (可能从头部添加、也可能从尾部添加)&#xff0c;依次添加1到n&#xff0c…