概念
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 客户端。支持集群、哨兵、管道、自动重新连接、编解码器等。
操作演示:
在IDEA中创建项目过程可以参考上一篇:
SpringBoot依赖之Spring Data Redis 一 String类型
接下来我们演示下Spring Boot 项目中使用 Spring Data Redis 实现哈希(Hash),我们可以通过修改之前的项目代码来完成,以下是具体的实现步骤。
1. 更新 Redis 服务类
在之前的 RedisService
类中添加哈希相关的方法。
package com.dependencies.springdataredis;
import org.springframework.data.redis.core.*;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
public class RedisService {
private final RedisTemplate<String, Object> redisTemplate;
private final HashOperations<String, String, Object> hashOperations;
public RedisService(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
this.hashOperations = redisTemplate.opsForHash();
}
// 保存哈希数据
public void saveToHash(String key, String field, String value) {
hashOperations.put(key, field, value);
}
// 从哈希中获取数据
public String getFromHash(String key, String field) {
return (String) hashOperations.get(key, field);
}
// 删除哈希中的某个字段
public void deleteFromHash(String key, String field) {
hashOperations.delete(key, field);
}
// 获取哈希中的所有键值对
public Map<String, Object> getAllFromHash(String key) {
return hashOperations.entries(key);
}
}
2. 更新控制器类
在 RedisController
中添加处理哈希操作的接口REST API,简单写就行,主要是为了验证功能的可用性。
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;
import java.util.Map;
@RestController
public class RedisController {
private final RedisService redisService;
public RedisController(RedisService redisService) {
this.redisService = redisService;
}
// 保存哈希数据
@GetMapping("/hash/set")
public String setHash(@RequestParam String key, @RequestParam String field, @RequestParam String value) {
redisService.saveToHash(key, field, value);
return "哈希值保存成功";
}
// 获取哈希中的数据
@GetMapping("/hash/get")
public String getHash(@RequestParam String key, @RequestParam String field) {
return redisService.getFromHash(key, field);
}
// 删除哈希中的某个字段
@GetMapping("/hash/delete")
public String deleteHashField(@RequestParam String key, @RequestParam String field) {
redisService.deleteFromHash(key, field);
return "哈希字段已删除";
}
// 获取哈希中的所有字段和值
@GetMapping("/hash/getall")
public Map<String, Object> getAllHash(@RequestParam String key) {
return redisService.getAllFromHash(key);
}
}
3. 验证测试哈希操作
启动项目后,使用以下 URL 进行测试:
保存哈希数据:
http://localhost:8080/hash/set?key=user:10101&field=name&value=一周一志程序员
- 这将保存一个哈希键值对,键为
user:10101
,字段为name
,值为一周一志程序员
。
- 这将保存一个哈希键值对,键为
获取哈希数据:
http://localhost:8080/hash/get?key=user:10101&field=name
- 这将从哈希
user:10101
中获取name
字段的值。
- 这将从哈希
删除哈希字段:
http://localhost:8080/hash/delete?key=user:10101&field=name
- 这将从哈希
user:10101
中删除name
字段。
- 这将从哈希
获取所有哈希数据:
http://localhost:8080/hash/getall?key=user:10101
- 这将返回哈希
user:10101
中的所有字段和值。
- 这将返回哈希
4. 总结
通过上述步骤,我们成功实现了在 Spring Boot 项目中使用 Spring Data Redis 操作哈希数据类型的功能。同理,我们可以使用类似的方式操作 Redis 中的其他数据类型。你学会了吗?可以关注私信我一起交流学习!