🌟 前言
欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍
🤖 洛可可白:个人主页
🔥 个人专栏:✅前端技术 ✅后端技术
🏠 个人博客:洛可可白博客
🐱 代码获取: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");
// 获取所有的key
Set<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");
// 删除指定的key
Long 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.xml
或build.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 {
@Autowired
private 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 实现动态渲染图标教程 |