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

第二十一节:学习Redis缓存数据库的Hash操作(自学Spring boot 3.x的第五天)

这节记录下Redis的Hash操作。主要是opsForHash方式和boundHashOps方式。

实现效果

boundHashOpsopsForHash都是Spring Data Redis中用于操作Redis哈希数据结构的方法,但它们在使用方式和场景上存在一些区别。

boundHashOps

  1. 使用方式

    • boundHashOps方法通过RedisTemplate的boundHashOps(String key)方法获取一个BoundHashOperations实例。这个实例与特定的哈希键(key)绑定,使得后续的操作都是针对这个特定的哈希键进行的。
    • 这种方式使得操作更加直观和方便,因为一旦绑定了哈希键,就可以通过BoundHashOperations实例提供的方法直接对这个哈希键下的数据进行操作,而无需在每次操作中都指定哈希键。
  2. 适用场景

    • 当需要对某个特定的哈希键进行频繁的操作时,使用boundHashOps可以简化代码,提高开发效率。

opsForHash

  1. 使用方式

    • opsForHash方法通过RedisTemplate的opsForHash()方法获取一个HashOperations实例。这个实例不是与特定的哈希键绑定的,而是可以直接用于操作Redis中的所有哈希数据结构。
    • 在进行哈希操作时,需要显式地指定哈希键和字段名。
  2. 适用场景

    • 当需要在多个哈希键之间进行操作,或者操作的哈希键不是固定的时,使用opsForHash可能更加灵活。

区别总结

boundHashOpsopsForHash
使用方式通过RedisTemplate的boundHashOps(String key)方法获取与特定哈希键绑定的BoundHashOperations实例通过RedisTemplate的opsForHash()方法获取可以直接操作所有哈希数据结构的HashOperations实例
操作对象特定哈希键下的数据Redis中的所有哈希数据结构
操作便捷性对特定哈希键的操作更加直观和方便,无需每次操作都指定哈希键需要在每次操作中显式指定哈希键和字段名,但在操作多个哈希键时更加灵活
适用场景对某个特定的哈希键进行频繁操作时更加适用在多个哈希键之间进行操作,或者操作的哈希键不是固定时更加适用

在实际开发中,可以根据具体的需求和场景选择合适的方法来操作Redis中的哈希数据结构。

    @PostMapping("/hash")public void save(){List<Student> list = studentService.list();//通过boundHashOps进行hash方式数据处理,保存数据BoundHashOperations<String,String,String> boundHashOperations = stringRedisTemplate.boundHashOps("studentList");for(Student s:list){boundHashOperations.put(String.valueOf(s.getId()),JSONUtil.toJsonStr(s));}//通过opsForHash进行hash方式数据处理,保存数据HashOperations operations = stringRedisTemplate.opsForHash();for(Student student:list){operations.put("studentList",String.valueOf(student.getId()),JSONUtil.toJsonStr(student));}}
    @DeleteMapping("/hash")public void delete(){List<Student> li = studentService.list();//通过boundHashOps进行hash方式数据处理,删除指定key数据下的某个数据BoundHashOperations<String,String,String> boundHashOperations = stringRedisTemplate.boundHashOps("studentList");boundHashOperations.delete("10");//通过opsForHash进行hash方式数据处理,删除指定key数据下的某个数据stringRedisTemplate.opsForHash().delete("studentList","10");//删除整个key数据stringRedisTemplate.delete("studentList");}
}

通过上面的2种方式我们可以看到,其实方法差不多,只是一个每次操作都要带上哈希键名,一个不需要。


http://www.mrgr.cn/news/31474.html

相关文章:

  • LabVIEW 实现 find_nearest_neighbors 功能(二维平面上的最近邻查找)
  • 深度学习:tensor的定义与维度
  • Linux开发讲课49--- Linux 启动过程分析
  • vscode的一些使用心得
  • SpringBoot(十三)SpringBoot配置webSocket
  • NLP论文速读(NeurIPS2024)|使用视觉增强的提示来增强视觉推理
  • go语言Map详解
  • 深度学习简历面试知识——transformer、VGGish、K-means、峰值检测
  • SQL编程题复习(24/9/20)
  • VM虚拟机使用的镜像文件下载
  • Linux:虚拟文件系统/proc和self进程
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第六集:制作小骑士完整的跳跃落地行为
  • 力扣(leetcode)每日一题 LCR 187 破冰游戏(还是考的约瑟夫环)
  • F28335中断系统
  • 第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)
  • Linux线程同步—竞态条件与互斥锁、读写锁(C语言)
  • PLC通信协议的转化
  • xhs 小红书 x-s web 分析
  • 如何下载ComfyUI开发版
  • SpringBoot开发-数据加密
  • Vue3DevTools7是如何在vscode定位指定文件位置的?
  • 浅谈穷举法
  • 【C/C++语言系列】实现单例模式
  • 在PyQt的QLabel控件上显示图像指南
  • 50.面向对象进阶训练-学生类
  • 达梦数据库踩坑