Spring Data Redis(一)
概念
Spring Data Redis (Access+Driver)
- 依赖名称: Spring Data Redis (Access+Driver)
- 功能描述: Advanced and thread-safe Java Redis client for synchronous, asynchronous, and reactive usage. Supports Cluster, Sentinel, Pipelining, Auto-Reconnect, Codecs and much more.
- 中文释义:用于同步、异步和反应式使用的高级且线程安全的 Java Redis 客户端。支持集群、哨兵、管道、自动重新连接、编解码器等。
操作演示:
在 IntelliJ IDEA 中创建一个 Spring Boot 项目并使用 Spring Data Redis 依赖,可以分为以下几个步骤进行。这个过程中会详细讲解如何配置 Redis 连接、如何使用 Spring Data Redis 操作 Redis 数据库,以及如何在应用中集成和测试这些操作。
项目创建步骤前面的很多文章都很详细,这里直接简写。有疑问的可以私信我,我会第一时间回复。
1. 创建 Spring Boot 项目
1.1 使用 Spring Initializr 创建项目
- 打开 IntelliJ IDEA。
- 点击
New Project
-> 选择Spring Initializr
。 - 配置项目的
Group
(如com.dependencies
)和Artifact
(如 springdataredis),然后选择Java
作为编程语言,Spring Boot 版本可以选择最新稳定版 目前我这边使用的事3.3.2 ,JDK版本是17。 - 点击
Next
,在Dependencies
部分,搜索并添加Spring Data Redis
、以及 spring-web 依赖。 - 点击
Finish
,IDEA 将自动创建项目。
2. 配置 Redis 连接
2.1 修改 application.properties
在 src/main/resources/application.properties
文件中配置 Redis 的连接信息:
spring.redis.host=127.0.1
spring.redis.port=6379
# 如果 Redis 没有设置密码可以留空
spring.redis.password=
spring.redis.database=0
此配置假设你在本地使用默认端口 6379 运行 Redis。如果 Redis 服务在其他位置运行或端口不同,请调整 host
和 port
。
2.2 可选的 Redis 配置类
如果需要自定义 Redis 的配置,可以创建一个配置类。例如,自定义 RedisTemplate
的序列化方式:
package com.dependencies.springdataredis;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* @author zhizhou 2024/8/17 12:03
*/
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
return template;
}
}
3. 创建 Redis 服务类
创建一个服务类,用于封装 Redis 的操作逻辑。这个类将使用 RedisTemplate
来与 Redis 交互。
package com.dependencies.springdataredis;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
/**
* @author zhizhou 2024/8/17 12:01
*/
@Service
public class RedisService {
private final RedisTemplate<String, Object> redisTemplate;
public RedisService(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
public void saveValue(String key, String value) {
redisTemplate.opsForValue().set(key, value);
}
public String getValue(String key) {
return (String) redisTemplate.opsForValue().get(key);
}
}
在这里,RedisTemplate
用于执行 Redis 操作。opsForValue()
方法处理与字符串相关的 Redis 操作。
4. 创建控制器类
为了能够通过 HTTP 请求与 Redis 进行交互,我们创建一个简单的 REST 控制器。使用@RestController注解需要引入spring
package com.dependencies.springdataredis;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @author zhizhou 2024/8/17 12:02
*/
@RestController
public class RedisController {
private final RedisService redisService;
public RedisController(RedisService redisService) {
this.redisService = redisService;
}
@GetMapping("/set")
public String setKey(@RequestParam String key, @RequestParam String value) {
redisService.saveValue(key, value);
return "保存成功";
}
@GetMapping("/get")
public String getKey(@RequestParam String key) {
return redisService.getValue(key);
}
}
这个控制器类包含两个端点:
/set
:将键值对保存到 Redis 中。/get
:从 Redis 中获取指定键的值。
5. 编写 Main
类启动应用
在 src/main/java/com/example/redis
目录下创建一个 Main
类用于启动 Spring Boot 应用:
package com.dependencies.springdataredis;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringDataRedisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDataRedisApplication.class, args);
}
}
6. 运行项目并测试
6.1 启动 Redis 服务
启动本地redis-server 或者 链接远程redis配置信息,同步在 application.properties
中配置的连接信息即可。
6.2 运行 Spring Boot 项目
在 IntelliJ IDEA 中运行项目。
6.3 测试 Redis 操作
使用浏览器或 Postman 等工具,访问以下 URL 来测试:
-
设置值:
http://localhost:8080/set?key=myKey&value=myValue
- 这会在 Redis 中保存一个键值对,键为
myKey
,值为myValue
。
- 这会在 Redis 中保存一个键值对,键为
-
获取值:
http://localhost:8080/get?key=myKey
- 这会从 Redis 中获取键
myKey
对应的值,并在浏览器中显示。
- 这会从 Redis 中获取键
7. 进一步扩展
在这个基础上,我们可以进一步扩展项目,比如:
- 操作其他类型的数据:除了字符串,还可以操作 Redis 的哈希(Hash)、列表(list)、集合(Set)、有序集合(Sorted Set)、位图(Bitmap)、HyperLogLog、地理空间(Geospatial)、Stream 等。
- 添加更多 Redis 操作:比如删除键、设置键过期时间等。
- 集成更多功能:比如使用 Redis 缓存数据库查询结果等。
总结
项目学习代码地址
通过这些步骤,我们可以在 IntelliJ IDEA 中创建一个简单的 Spring Boot 项目,并成功集成和使用 Spring Data Redis 依赖进行 Redis 操作。这个例子展示了基本的键值操作,以及如何通过 REST 控制器进行简单的交互。到此redis string 格式已经完成demo,扩展中的功能我们下一次再分享。