爆肝3k字!掌握Spring与Redis的高效交互:从Jedis到Spring Data Redis

🌟 前言

欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍

  • 🤖 洛可可白:个人主页

  • 🔥 个人专栏:✅前端技术 ✅后端技术

  • 🏠 个人博客:洛可可白博客

  • 🐱 代码获取:bestwishes0203

  • 📷 封面壁纸:洛可可白wallpaper

在这里插入图片描述

文章目录

  • 爆肝3k字!掌握Spring与Redis的高效交互:从Jedis到Spring Data Redis
    • Spring中通过Jedis操作Redis数据库的实践指南
      • 环境准备
      • 引入依赖
      • 编写代码
      • 代码解析
    • Spring中通过JedisPool高效操作Redis数据库的实践指南
      • 引入依赖
      • 编写代码
      • 代码解析
    • Spring Boot中使用Spring Data Redis操作数据库的实践指南
      • 环境准备
      • 引入依赖
      • 编写代码
      • 代码解析
    • 🎉 往期精彩回顾

爆肝3k字!掌握Spring与Redis的高效交互:从Jedis到Spring Data Redis

Redis以其卓越的性能和多功能性成为了不可或缺的组件。本文将深入探讨如何在Spring框架中通过Jedis和JedisPool直接操作Redis,以及如何利用Spring Data Redis简化数据交互过程。我们将从环境搭建开始,逐步介绍依赖引入、代码编写、功能实现,最终通过实例展示如何在Spring Boot应用中高效地使用Redis。无论你是初学者还是有经验的开发者,本文都将为你提供有价值的见解和实用的操作指南。

Spring中通过Jedis操作Redis数据库的实践指南

在现代的Web应用开发中,Redis已经成为了一个非常重要的组件,它以其出色的性能、完美的文档、简洁易懂的API和丰富的数据结构支持,被广泛应用于缓存、消息队列、排行榜、实时系统等多个场景。Spring作为Java界最受欢迎的框架之一,与Redis的结合使用自然也成为了开发者们的必备技能。本文将通过一段简单的代码示例,介绍如何在Spring框架中使用Jedis来操作Redis数据库。

环境准备

在开始之前,确保你的开发环境中已经安装了以下组件:

  • Java开发环境(JDK)
  • Maven或Gradle(用于依赖管理)
  • Redis服务端(可以从官网下载并自行搭建,也可以使用在线的Redis服务)
  • Spring Boot(简化Spring应用的搭建和配置)

引入依赖

在Spring Boot项目中,我们通常会使用Maven或Gradle来管理项目的依赖。为了使用Jedis,我们需要在项目的pom.xml(Maven)或build.gradle(Gradle)文件中添加以下依赖:

Maven:

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

Gradle:

implementation 'redis.clients:jedis:3.6.0'

请将最新版本号替换为当前Jedis的最新版本。

编写代码

以下是一个简单的Spring Boot控制器示例,展示了如何在一个GET请求中使用Jedis来操作Redis。

package com.example.springredis.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import redis.clients.jedis.Jedis;import java.util.Set;@RestController
public class RedisController {@GetMapping("test01")public void test01() {// 连接到Redis服务Jedis jedis = new Jedis("127.0.0.1", 6379);// 如果你的Redis设置了密码,需要进行认证jedis.auth("yourPasswordHere");// 获取所有的keySet<String> keys = jedis.keys("*");keys.forEach(System.out::println);// 向Redis中添加几个key-value对jedis.set("k1", "v1");jedis.set("k2", "v2");jedis.set("k3", "v3");jedis.set("k4", "v4");jedis.set("k5", "v5");// 删除指定的keyLong c = jedis.del("k1", "k2", "k5");System.out.println("删除key的个数: " + c);// 判断指定的key是否存在Boolean exists = jedis.exists("k2");System.out.println("判断key是否存在: " + exists);// 关闭资源jedis.close();}
}

代码解析

在这段代码中,我们首先创建了一个Jedis对象来连接到Redis服务。默认情况下,Jedis会尝试连接到127.0.0.1上的6379端口,这也是Redis的默认配置。如果你的Redis服务运行在不同的主机或端口上,你需要在构造Jedis对象时提供相应的参数。

接着,我们使用auth方法对Redis进行了认证,这一步仅在Redis设置了密码的情况下需要。

然后,我们使用keys方法获取了所有的key,并打印了出来。之后,我们通过set方法向Redis中添加了几个key-value对。

为了展示如何管理key,我们还演示了如何删除指定的key(使用del方法),以及如何检查一个key是否存在(使用exists方法)。

最后,我们关闭了Jedis对象,释放了与之相关的资源。

Spring中通过JedisPool高效操作Redis数据库的实践指南

在上一篇关于Spring通过Jedis操作Redis的文章中,我们了解了如何使用Jedis来执行基本的Redis操作。然而,在高并发的场景下,频繁地创建和销毁Jedis连接会导致性能问题。为了解决这一问题,Jedis提供了连接池的实现——JedisPool,它能够有效地管理Jedis连接,提高资源利用率和操作效率。本文将通过一个简单的Spring Boot控制器示例,介绍如何在Spring框架中使用JedisPool来高效操作Redis数据库。

引入依赖

首先,确保你的项目中已经引入了Jedis的依赖,如前文所述,在pom.xmlbuild.gradle中添加以下依赖:

Maven:

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

Gradle:

implementation 'redis.clients:jedis:3.6.0'

请将最新版本号替换为当前Jedis的最新版本。

编写代码

以下是一个Spring Boot控制器的示例,展示了如何使用JedisPool来操作Redis。

package com.example.springredis.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;import java.util.List;
import java.util.Map;
import java.util.Set;@RestController
public class RedisPoolController {@GetMapping("test04")public void test04() {// 创建连接池的配置类JedisPoolConfig config = new JedisPoolConfig();config.setMinIdle(5); // 设置空闲的个数config.setMaxIdle(10);config.setMaxTotal(2000); // 设置最多的数量config.setMaxWaitMillis(6000); // 设置最大的等待时长config.setTestOnBorrow(true); // 是否检验池子中的jedis对象可用// 创建jedis连接池对象JedisPool jedisPool = new JedisPool(config, "127.0.0.1", 6379, 1000, "rootXH");// 通过池子获取其中的一个连接Jedis jedis = null;try {jedis = jedisPool.getResource();// 执行Redis操作Map<String, String> map1 = jedis.hgetAll("myhash");System.out.println("获取指定key对应的内容: " + map1);} finally {// 关闭Jedis连接if (jedis != null) {jedis.close();}}}
}

代码解析

在这段代码中,我们首先创建了一个JedisPoolConfig对象,用于配置连接池的参数。我们设置了最小空闲连接数、最大空闲连接数、最大连接数、最大等待时长以及是否在借用连接时进行有效性检查。

接着,我们使用JedisPool构造函数创建了一个连接池对象。这里的参数包括配置类、Redis服务器的IP地址、端口号、超时时间和密码。请根据你的Redis服务器实际情况进行相应的修改。

然后,我们通过getResource方法从连接池中获取了一个Jedis实例。在这个实例上,我们可以执行各种Redis操作,例如本例中的hgetAll方法,它用于获取指定key对应的哈希表中的所有字段和值。

最后,我们使用finally块确保Jedis连接被正确关闭,无论操作是否成功。这是一个非常重要的步骤,因为它可以避免连接泄露和其他潜在的资源问题。

Spring Boot中使用Spring Data Redis操作数据库的实践指南

在现代的Web应用开发中,Redis已经成为了一个非常重要的组件,它以其出色的性能、完美的文档、简洁易懂的API和丰富的数据结构支持,被广泛应用于缓存、消息队列、排行榜、实时系统等多个场景。Spring Data Redis是Spring提供的一个简化Redis操作的框架,它使得我们可以更加便捷地在Spring应用中使用Redis。本文将通过一个Spring Boot控制器示例,介绍如何使用Spring Data Redis来操作Redis数据库。

环境准备

在开始之前,确保你的开发环境中已经安装了以下组件:

  • Java开发环境(JDK)
  • Maven或Gradle(用于依赖管理)
  • Redis服务端(可以从官网下载并自行搭建,也可以使用在线的Redis服务)
  • Spring Boot(简化Spring应用的搭建和配置)

引入依赖

在Spring Boot项目中,我们通常会使用Maven或Gradle来管理项目的依赖。为了使用Spring Data Redis,我们需要在项目的pom.xml(Maven)或build.gradle(Gradle)文件中添加以下依赖:

Maven:

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

Gradle:

implementation 'org.springframework.boot:spring-boot-starter-data-redis'

编写代码

以下是一个Spring Boot控制器的示例,展示了如何使用Spring Data Redis来操作Redis。

package com.example.springredis.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RedisDataController {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@GetMapping("test05")public void test05() {// 获取对string类型操作的类对象ValueOperations<String, String> forValue = stringRedisTemplate.opsForValue();// 设置键值对forValue.set("n1", "测试数据1");forValue.set("n2", "2");forValue.set("n3", "测试数据3");// 如果存在 则不存入 不存在则存入Boolean aBoolean = forValue.setIfAbsent("n4", "测试数据4", 25, TimeUnit.SECONDS);System.out.println("是否存入成功 " + aBoolean);// 获取对应的值String n1 = forValue.get("n1");System.out.println("n1 = " + n1);// 递增操作Long n2 = forValue.increment("n2");System.out.println("n2递增后的值 " + n2);}
}

代码解析

在这段代码中,我们首先通过@Autowired注解自动注入了一个StringRedisTemplate对象。StringRedisTemplate是Spring Data Redis提供的一个类,它封装了对字符串类型数据的操作。

接着,我们通过opsForValue方法获取了一个ValueOperations对象,它提供了对Redis中的字符串类型数据进行操作的方法。

我们使用set方法设置了三个键值对。然后,我们使用setIfAbsent方法尝试设置一个新的键值对,但仅当指定的key不存在时才进行设置。这个方法非常有用,当我们想要保证某个键值对的唯一性时。

之后,我们通过get方法获取了一个已经设置的键对应的值,并打印了出来。

最后,我们使用increment方法对一个键对应的值进行了递增操作。这个方法可以接受一个可选的增量参数,如果不指定,则默认递增1。

如果对你有帮助,点赞👍、收藏💖、关注🔔是我更新的动力!👋🌟🚀

🎉 往期精彩回顾

Vue项目实战:基于用户身份的动态路由管理
Vite多环境配置与打包:灵活高效的Vue开发工作流
前端实现自动获取农历日期:探索JavaScript的跨文化编程
自定义滚动条样式:前端实现跨浏览器兼容
Windows Edge 兼容性问题修复:提升用户体验的关键步骤
Vue2和Vue3组件通信:父子与兄弟间的桥梁
无缝集成:使用Spring Boot和Vue实现头像上传与回显功能
前端开发全景指南:语言与框架的精粹
C语言开发实战:使用EasyX在Visual Studio 2022中创建井字棋游戏
前端与后端协同:实现Excel导入导出功能
Java日期格式化:掌握时间的艺术
正则表达式完全指南:语法、用法及JavaScript实例
正则表达式与JSON序列化:去除JavaScript对象中的下划线键名
探索async/await的魔力:简化JavaScript异步编程
JavaScript日期格式化:从原始值到用户友好的字符串
入门教程:Windows搭建C语言和EasyX开发环境
CentOS系统下Docker的安装教程
Spring Boot单元测试全指南:使用Mockito和AssertJ
Yarn简介及Windows安装与使用指南
H5实现3D旋转照片墙教程
Element-Plus 实现动态渲染图标教程

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

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

相关文章

Spring Boot 多环境配置:YML 文件的三种高效方法

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

Linux内核之WRITE_ONCE用法实例(四十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

单链表实现通讯录-三万字

声明 这一篇文章我会从单链表的概念&#xff0c;单链表的原理&#xff0c;一直到通讯录项目单链表的实现&#xff0c;再把单链表的专用题型系统的讲解一下&#xff08;文章较长&#xff09;。同时建议学习单链表之前可以学习一下顺序表&#xff0c;作为知识铺垫顺序表&#xf…

【Java】@RequestMapping注解在类上使用

RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一。这个注解会将 HTTP 请求映射到控制器&#xff08;controller类&#xff09;的处理方法上。 Request Mapping 基础用法 在 Spring MVC 应用程序中&#xff0c;RequestDispatcher (在 Front Controller 之下) 这…

【HCIP学习】OSPF协议基础

一、OSPF基础 1、技术背景&#xff08;RIP中存在的问题&#xff09; RIP中存在最大跳数为15的限制&#xff0c;不能适应大规模组网 周期性发送全部路由信息&#xff0c;占用大量的带宽资源 路由收敛速度慢 以跳数作为度量值 存在路由环路可能性 每隔30秒更新 2、OSPF协议…

Spark-机器学习(2)特征工程之特征提取

在之前的文章中&#xff0c;我们了解我们的机器学习&#xff0c;了解我们spark机器学习中的MLIib算法库&#xff0c;知道它大概的模型&#xff0c;熟悉并认识它。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&a…

【ARFoundation自学01】搭建AR框架,检测平面点击位置克隆物体

Unity开发ARFoundation相关应用首先安装ARFoundation包 然后设置XR 1.基础AR场景框架搭建 2.一个基本的点击克隆物体到识别的平面脚本 挂在XROrigin上 脚本AppController 脚本说明书 ## 业务逻辑 AppController 脚本旨在实现一个基本的 AR 应用程序功能&#xff1a;用户通过…

R语言使用installr包对R包进行整体迁移

今天分享一个R语言的实用小技巧&#xff0c;如果咱们重新安装了电脑&#xff08;我重装了电脑&#xff09;或者因为需要卸载旧版本的R软件&#xff0c;安装新版本的R&#xff0c;那么必然会造成R包的库缺失&#xff0c;需要重新下载&#xff0c;有些还不是官方的R包&#xff0c…

12.模板进阶(模板的全特化,偏特化,声明与定义分离)

1. 非类型模板参数 模板参数分类: 类型形参 与 非类型形参 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当…

爬取东方财富股票代码

我们打开东方财富网站&#xff1a;http://quote.eastmoney.com/stocklist.html 假如懒得爬&#xff0c;也可以用现成的股票数据源&#xff1a;https://stockapi.com.cn 这展示了所有股票信息&#xff0c;不过需要我们分页去爬取 我们可以查询具体的html代码&#xff1a; <…

服装连锁收银软件哪个好用

竞争激烈的服装连锁行业&#xff0c;选择一款高效可靠的收银软件至关重要。商淘云连锁收银软件作为业内领先的解决方案之一&#xff0c;备受关注和好评。本文将介绍商淘云连锁收银软件&#xff0c;并分享其在提升服装连锁店效率和客户体验方面的优势。 1. 商淘云连锁收银软件的…

异地组网如何安装?

【天联】是一款强大的异地组网安装工具&#xff0c;可以帮助企业实现远程设备的统一管理和协同办公。以下是【天联】可以应用的一些场景&#xff1a; 零售、收银软件应用统一管理&#xff1a;【天联】可以结合医药、餐饮、商超等零售业的收银软件&#xff0c;实现异地统一管理。…

OpenHarmony开发案例:【分布式遥控器】

1.概述 目前家庭电视机主要通过其自带的遥控器进行操控&#xff0c;实现的功能较为单一。例如&#xff0c;当我们要在TV端搜索节目时&#xff0c;电视机在遥控器的操控下往往只能完成一些字母或数字的输入&#xff0c;而无法输入其他复杂的内容。分布式遥控器将手机的输入能力…

解决QtCreator不能同时运行多个程序的方法

当我们运行QtCreator代码的时候&#xff0c;往往一个代码&#xff0c;可能需要打开好几个运行&#xff0c;但是会出现的情况就是&#xff0c;如果打开了一个界面&#xff0c;当我么再运行的时候&#xff0c;第一个界面就没有了&#xff0c;而且可能会出现终端报错的情况&#x…

Spectral Adversarial MixUp for Few-Shot Unsupervised Domain Adaptation论文速读

文章目录 Spectral Adversarial MixUp for Few-Shot Unsupervised Domain Adaptation摘要方法Domain-Distance-Modulated Spectral Sensitivity (DoDiSS&#xff09;模块Sensitivity-Guided Spectral Adversarial Mixup (SAMix)模块 实验结果 Spectral Adversarial MixUp for F…

上海计算机学会 2023年10月月赛 乙组T3 树的连通子图(树、树形dp)

第三题&#xff1a;T3树的连通子图 标签&#xff1a;树、树形 d p dp dp题意&#xff1a;给定一棵 n n n个结点的树&#xff0c; 1 1 1号点为这棵树的根。计算这棵树连通子图的个数&#xff0c;答案对 1 , 000 , 000 , 007 1,000,000,007 1,000,000,007取余数。题解&#xff1…

HTML内联框架

前言&#xff1a; 我们有时候打开网页时会有广告窗的出现&#xff0c;而这些窗口并不是来自于本站的&#xff0c;而是来自于外部网页&#xff0c;只是被引用到了自己网页中而已。这一种技术可以通过内联来实现。 标签介绍&#xff1a; HTML 内联框架元素 (<iframe>) 表示…

快速入门Spring Data JPA

Spring Data JPA是Spring Data框架的一小部分&#xff0c;它能够让开发者能够更加简单的对数据库进行增删改查。 由于Spring Data JPA可以自动生成SQL代码所以一般情况下&#xff0c;简单的增删查改就可以交给Spring Data JPA来完成&#xff0c;而复杂的动态SQL等用MyBatis来完…

即插即用模块详解SCConv:用于特征冗余的空间和通道重构卷积

目录 一、摘要 二、创新点说明 2.1 Methodology 2.2SRU for Spatial Redundancy​编辑 2.3CRU for Channel Redundancy 三、实验 3.1基于CIFAR的图像分类 3.2基于ImageNet的图像分类 3.3对象检测 四、代码详解 五、总结 论文&#xff1a;https://openaccess.thecvf.c…

在Qt中如何简单设计一个文件和图像浏览器

文本浏览器 设计一个文本浏览器程序&#xff0c;可以打开、显示 txt、html等文件。 1.在Qt Designer中设计一个菜单其中包含打开和退出选项&#xff1a; 2. 在 QMainWindow 构造函数中把 textBrower 设为主窗口的中心部件&#xff0c;这样整个窗口就成了包含 textBrower 的单文…