在Spring Boot微服务使用JedisCluster操作Redis集群String字符串
记录:449
场景:在Spring Boot微服务使用JedisCluster操作Redis集群的String字符串数据类型。
版本:JDK 1.8,Spring Boot 2.6.3,redis-6.2.5,jedis-3.7.1。
1.微服务中配置Redis信息
1.1在pom.xml添加依赖
pom.xml文件:
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.1</version>
</dependency>
解析:在Spring Boot中默认集成jedis,使用无需加版本号,本例版本3.7.1是Spring Boot 2.6.3对应的版本。
1.2在application.yml中配置Redis集群信息
(1)application.yml配置内容
hub:example:redis:jedis-cluster:password: demo12345678connection-timeout: 60000so-timeout: 1000max-attempts: 100nodes:- 192.168.19.161:27001- 192.168.19.161:27002- 192.168.19.162:27001- 192.168.19.162:27002- 192.168.19.163:27001- 192.168.19.163:27002
(2)解析
在application.yml中配置内容是自定义的,对应自定义配置类JedisClusterProperties。
类全称:com.hub.example.config.JedisClusterProperties。
自定义配置类使用如下注解生效:
@ConfigurationProperties(prefix = "hub.example.redis.jedis-cluster")
1.3加载简要逻辑
Spring Boot微服务在启动时,自动注解机制会读取application.yml的配置信息注入到自定义配置类JedisClusterProperties对象的对应属性。因此,在Spring环境中就能取到Redis集群的配置信息。
Spring从JedisClusterProperties对象中取配置注入到JedisCluster客户端中。因此,JedisCluster客户端就能对Redis集群做增、删、改、查等操作。
2.配置JedisCluster
JedisCluster是jedis框架中封装的操作Redis的客户端。
类全称:redis.clients.jedis.JedisCluster
2.1配置JedisClusterProperties
JedisClusterProperties是自定义配置了,作用是加载application.yml中Redis集群的配置信息。
使用@ConfigurationProperties注解生效,使用注解的prefix指定配置application.yml中前缀。
@Component
@ConfigurationProperties(prefix = "hub.example.redis.jedis-cluster")
public class JedisClusterProperties {private List<String> nodes;private String password;private int connectionTimeout;private int soTimeout;private int maxAttempts;public List<String> getNodes() {return nodes;}public void setNodes(List<String> nodes) {this.nodes = nodes;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getConnectionTimeout() {return connectionTimeout;}public void setConnectionTimeout(int connectionTimeout) {this.connectionTimeout = connectionTimeout;}public int getSoTimeout() {return soTimeout;}public void setSoTimeout(int soTimeout) {this.soTimeout = soTimeout;}public int getMaxAttempts() {return maxAttempts;}public void setMaxAttempts(int maxAttempts) {this.maxAttempts = maxAttempts;}
}
2.2配置JedisCluster
@Configuration
public class JedisClusterConfig {@AutowiredJedisClusterProperties jedisClusterProperties;@Bean("jedisCluster")public JedisCluster getJedisCluster(JedisPoolConfig jedisPoolConfigCluster) {List<String> nodesList = jedisClusterProperties.getNodes();Set<HostAndPort> nodesSet = new HashSet<>();for (String ipAndPort : nodesList) {String[] ipAndPortPair = ipAndPort.split(":");nodesSet.add(new HostAndPort(ipAndPortPair[0].trim(), Integer.parseInt(ipAndPortPair[1].trim())));}return new JedisCluster(nodesSet,jedisClusterProperties.getConnectionTimeout(),jedisClusterProperties.getSoTimeout(),jedisClusterProperties.getMaxAttempts(),jedisClusterProperties.getPassword(),jedisPoolConfigCluster);}@Bean("jedisPoolConfigCluster")public JedisPoolConfig jedisPoolConfigCluster() {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();jedisPoolConfig.setMaxTotal(30);jedisPoolConfig.setMaxIdle(30);jedisPoolConfig.setMinIdle(1);jedisPoolConfig.setNumTestsPerEvictionRun(-1);jedisPoolConfig.setTestOnBorrow(true);jedisPoolConfig.setTestOnReturn(false);jedisPoolConfig.setBlockWhenExhausted(false);return jedisPoolConfig;}
}
2.3解析
配置JedisCluster后,在Spring环境中,使用@Autowired注解注入JedisCluster实例操作Redis集群。
3.使用Jedis操作Redis集群String字符串
3.1简要说明
使用JedisCluster操作Redis集群String字符串,常用操作:增、查、改、删、设置超时等。
3.2操作示例
@RestController
@RequestMapping("/hub/example/operateJedisCluster")
@Slf4j
public class OperateJedisClusterController {@Autowiredprivate JedisCluster jedisCluster;/*** 使用JedisCluster操作Redis集群String字符串类型数据*/@GetMapping("/f02")public Object f02() {log.info("JedisCluster操作Redis集群开始...");// 1.增// 1.1写一条数据jedisCluster.set("J:2023060802:01", "苏州");// 1.2写一条数据,键不存在时,才对键进行设置操作jedisCluster.setnx("J:2023060802:02", "苏州-工业园区");// 1.3写一条数据,并设置超时,600秒jedisCluster.setex("J:2023060802:03", 600L, "苏州-相城");// 2.查String result01 = jedisCluster.get("J:2023060802:01");log.info("查询J:2023060802:01 = " + result01.toString());// 3.改// 3.1修改一条数据jedisCluster.set("J:2023060802:01", "苏州-姑苏");// 3.1修改一条数据,只有键存在才修改SetParams setParams01 = new SetParams();setParams01.ex(5 * 60L);setParams01.xx();jedisCluster.set("J:2023060802:03", "苏州-工业园区-苏州", setParams01);// 4.删long time = 8000;log.info("{}秒后,删除J:2023060802:03.", time / 1000);ThreadUtil.sleep(time);jedisCluster.del("J:2023060802:03");// 5.判断键是否存在Boolean exists01 = jedisCluster.exists("J:2023060802:03");// 6.设置超时// 6.1设置5分钟超时SetParams setParams02 = new SetParams();setParams02.ex(5 * 60L);jedisCluster.set("J:2023060802:04", "苏州-昆山", setParams02);// 6.2设置10分钟超时jedisCluster.expire("J:2023060802:04", 10 * 60L);// 7.查存活时间Long ttl = jedisCluster.ttl("J:2023060802:04");log.info("缓存J:2023060802:04剩余存活时间: {}", ttl);log.info("JedisCluster操作Redis集群结束...");return "执行成功";}
}
3.3测试验证
使用Postman测试。
请求RUL:http://127.0.0.1:18205/hub-205-redis/hub/example/operateJedisCluster/f02
以上,感谢。
2023年6月8日
相关文章:
在Spring Boot微服务使用JedisCluster操作Redis集群String字符串
记录:449 场景:在Spring Boot微服务使用JedisCluster操作Redis集群的String字符串数据类型。 版本:JDK 1.8,Spring Boot 2.6.3,redis-6.2.5,jedis-3.7.1。 1.微服务中配置Redis信息 1.1在pom.xml添加依赖 pom.xml文件: <…...
5.1 合并数据
5.1 合并数据 5.1.1 堆叠合并数据1、横向堆叠 concat()2、纵向堆叠 concat()和append() 5.1.2 主键合并数据 merge()和join()5.1.3 重叠合并数据 combine_first() 5.1.1 堆叠合并数据 堆叠就是简单地把两个表拼在一起,也被称作轴向连接、绑定或连接。依照连接轴的方…...
华为OD机试真题 JavaScript 实现【求解立方根】【牛客练习题】
一、题目描述 计算一个浮点数的立方根,不使用库函数。保留一位小数。 数据范围:∣val∣≤20 。 二、输入描述 待求解参数,为double类型(一个实数) 三、输出描述 输出参数的立方根。保留一位小数。 四、解题思路…...
初探BERTPre-trainSelf-supervise
初探Bert 因为一次偶然的原因,自己有再次对Bert有了一个更深层地了解,特别是对预训练这个概念,首先说明,自己是看了李宏毅老师的讲解,这里只是尝试进行简单的总结复述并加一些自己的看法。 说Bert之前不得不说现在的…...
Ficus 第二弹,突破限制器的 Markdown 编辑管理软件!
大家好,我们是 ggG 团队,我们开发的 markdown 笔记管理软件 Ficus Beta 版本正式发布了。详情可以见我们官网,也可以来我们仓库查看。 相对于 Alpha 版本(可以在我们之前的博客中查看),主要有 3 点明显的提…...
基于Springboot+vue+协同过滤+前后端分离+鲜花商城推荐系统(用户,多商户,管理员)+全套视频教程
基于Springbootvue协同过滤前后端分离鲜花商城推荐系统(用户,多商户,管理员)(毕业论文11000字以上,共33页,程序代码,MySQL数据库) 代码下载: 链接:https://pan.baidu.com/s/1mf2rsB_g1DutFEXH0bPCdA 提取码:8888 【运行环境】Idea JDK1.8 Maven MySQL…...
MixQuery系列(一):多数据源混合查询引擎调研
背景 存储情况 当前的存储引擎可谓百花齐放,层出不穷。为什么会这样了?因为不存在One for all的存储,不同的存储总有不同的存储的优劣和适用场景。因此,在实际的业务场景中,不同特点的数据会存储到不同的存储引擎里。 业务挑战 然而异构的存储和数据源,却给分析查询带…...
d2l学习——第一章Introduction
x.0 环境配置 使用d2l库,安装如下: conda create --name d2l python3.9 -y conda activate d2lpip install torch1.12.0 torchvision0.13.0 pip install d2l1.0.0b0mkdir d2l-en && cd d2l-en curl https://d2l.ai/d2l-en.zip -o d2l-en.zip u…...
【python】【Word】用正则表达式匹配正文中的标题(未使用样式)并通过win32com指定相应样式
标题的格式 二级标题: 数字.数字. 文字 三级标题:数字.数字.数字 文字 python代码 使用方法 只保留一个需要应用的WORD文档运行程序,逐行匹配 使用效果 代码 import win32com.client import redef compile_change_Word_titlestyle():#…...
Matlab实现光伏仿真(附上完整仿真源码)
光伏发电电池模型是描述光伏电池在不同条件下产生电能的数学模型。该模型可以用于预测光伏电池的输出功率,并为优化光伏电池系统设计和控制提供基础。本文将介绍如何使用Matlab实现光伏发电电池模型。 文章目录 1、光伏发电电池模型2、使用Matlab实现光伏发电电池模…...
JVM零基础到高级实战之Java内存区域方法区
JVM零基础到高级实战之Java内存区域方法区 JVM零基础到高级实战之Java内存区域方法区 文章目录 JVM零基础到高级实战之Java内存区域方法区前言JVM内存模型之JAVA方法区总结 前言 JVM零基础到高级实战之Java内存区域方法区 JVM内存模型之JAVA方法区 JAVA方法区是什么…...
SpringCloud-stream一体化MQ解决方案-消费者组
参考资料: 参考demo 参考视频1 参考视频2 官方文档(推荐) 官方文档中文版 关于Kafka和rabbitMQ的安装教程,见本人之前的博客 rocketMq的安装教程 rocketMq仪表盘安装教程 重!!!...
HNU计算机图形学-作业二
HNU计算机图形学-作业二 作业二:纹理和照明前言介绍实施详细信息任务1:加载复杂对象任务2:纹理映射和照明任务3:互动活动和动画额外任务:增强场景的视觉效果(最高20%) 最终实现效果 作业二&…...
湖南大学OS-2020期末考试解析
【特别注意】 答案来源于@wolf以及网络 是我在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。 【试卷评析】 这张卷子有点老了,部分题目可能有用。如果仔细研究应该会有所收获。 【试卷与答案】 一、选择题(15%) 1.下列关于进程状态转换,不正确的是:C A. …...
【用户认证】密码加密,用户状态保存,cookie,session,token
相关概念 认证与授权 认证(authentication )是验证你的身份的过程,而授权(authorization)是验证你有权访问的过程 用户认证的逻辑 获取用户提交的用户名和密码根据用户名,查询数据库,获得完…...
LVS+Keepalivedd
Keepalived 一、Keepalived及其工作原理二、实验非抢占模式的设置 三、脑裂现象四、Nginx高可用模式 一、Keepalived及其工作原理 keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可用解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器…...
WPF开发txt阅读器7:自定义文字和背景颜色
文章目录 添加控件具体实现代码说明 txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录字体控件绑定书籍管理系统💎用树形图管理书籍 添加控件 除了字体、字体大小之外,文字和背景颜色也会影响阅读观感,…...
Elasticsearch文件存储
分析Elasticsearch Index文件是如何存储的? 主要是想看一下FST文件是以什么粒度创建的? 首先通过kibana找一个索引的shard,此处咱们就以logstash-2023.05.30索引为例 查看下shard分布情况 GET /_cat/shards/logstash-2023.05.30?vindex …...
chatgpt赋能python:如何安装pyecharts
如何安装pyecharts Pyecharts是一个基于echarts的数据可视化工具,它是Python语言的一个库,可以通过Python编程语言进行数据可视化,并且能通过交互式的方式展示出来。 在本文中,我们将介绍如何安装pyecharts,如果您是…...
cmake 添加一个库
目录 项目格式 cmake基本语法 设置编译器 添加库 链接库 添加库的头文件 cmake打印字符串 库的cmake文件 cmake生辰库 mian函数中使用 让库成为可选的 cmake基本语法 设置option变量 cmake设置条件链接库 链接库 添加头文件 修改cmake配置文件 修改引用的源码…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
