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

第二十一节:学习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.kler.cn/a/315101.html

相关文章:

  • redis bind 127.0.0.1和bind 10.34.56.78的区别
  • 大厂的 404 页面都长啥样?看看你都见过吗~~~
  • NAT网络工作原理和NAT类型
  • 《MYSQL45讲》误删数据怎么办
  • ArcGIS Pro属性表乱码与字段名3个汉字解决方案大总结
  • R语言机器学习与临床预测模型77--机器学习预测常用R语言包
  • 深度学习02-pytorch-08-自动微分模块
  • OctoSQL 查询大量数据库和文件格式
  • Wireshark学习使用记录
  • 学习笔记JVM篇(三)
  • Jumpsever
  • yolov8改进|引入ScConv,轻量化网络
  • Go语言并发编程之Channels详解
  • windows安装Anaconda教程
  • 自学笔记之TVM编译器框架 ,核心特性,模型优化概述,AI应用落地
  • [001-02-001].第2节:java开发环境搭建
  • UE5学习笔记22-武器瞄准和武器自动开火
  • Python计算机视觉 第10章-OpenCV
  • 对网页聊天项目进行性能测试, 使用JMeter对于基于WebSocket开发的webChat项目的聊天功能进行测试
  • Shell篇之编写apache启动脚本
  • Machine Learning Specialization 学习笔记(4)
  • MySQL RANGE 分区规则
  • C# WPF 为何能成为工控上位机开发的首选
  • 常见中间件漏洞(Jboss)靶场
  • PyTorch 目标检测教程
  • 图神经网络的新篇章:通用、强大、可扩展的图变换器