SpringBoot依赖之Spring Data Redis 一 Hash类型

概念

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 中的其他数据类型。你学会了吗?可以关注私信我一起交流学习!

你可能感兴趣的:(微服务架构设计,spring,spring,boot,redis)