当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • VirtualBox安装Oracle Linux 7.9全流程
  • 【秋招笔试】8.17京东秋招第二场(后端岗)-三语言题解
  • 什么是OpenTiny?
  • 使用Nexus搭建Maven私服仓库
  • C++之STL容器详解(包含十种常用容器)
  • 给既有exe程序添加一机一码验证
  • 共享内存、消息队列、信号量
  • GPT-SoVITS
  • EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2)
  • 大模型日报 2024-08-16
  • vim中跳转头文件
  • JS DOM、点击事件
  • C++ 设计模式——简单工厂模式
  • 忽略时间戳,快速对比tcpreplay和tcpdump数据包pcap数据包一致性
  • 开发军用LabVIEW程序注意事项
  • @jsonView过滤属性
  • 【React系列】如何构建React应用程序
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Angular Elements 及其运作原理
  • Electron入门介绍
  • Fabric架构演变之路
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • javascript 哈希表
  • Javascript基础之Array数组API
  • laravel5.5 视图共享数据
  • Node项目之评分系统(二)- 数据库设计
  • 从输入URL到页面加载发生了什么
  • 基于HAProxy的高性能缓存服务器nuster
  • 记录:CentOS7.2配置LNMP环境记录
  • 坑!为什么View.startAnimation不起作用?
  • 为什么要用IPython/Jupyter?
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • ionic入门之数据绑定显示-1
  • scrapy中间件源码分析及常用中间件大全
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • #APPINVENTOR学习记录
  • #window11设置系统变量#
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • %@ page import=%的用法
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (python)数据结构---字典
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (第27天)Oracle 数据泵转换分区表
  • (二)c52学习之旅-简单了解单片机
  • (二)fiber的基本认识
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (一)UDP基本编程步骤
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .cfg\.dat\.mak(持续补充)
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • ??javascript里的变量问题