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

news2024/9/21 7:47:02

这节记录下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.coloradmin.cn/o/2151729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【第十三章:Sentosa_DSML社区版-机器学习聚类】

目录 【第十三章&#xff1a;Sentosa_DSML社区版-机器学习聚类】 13.1 KMeans聚类 13.2 二分KMeans聚类 13.3 高斯混合聚类 13.4 模糊C均值聚类 13.5 Canopy聚类 13.6 Canopy-KMeans聚类 13.7 文档主题生成模型聚类 13.8 谱聚类 【第十三章&#xff1a;Sentosa_DSML社…

C#基于SkiaSharp实现印章管理(8)

上一章虽然增加了按路径绘制文本&#xff0c;支持按矩形、圆形、椭圆等路径&#xff0c;但测试时发现通过调整尺寸、偏移量等方式不是很好控制文本的位置。相对而言&#xff0c;使用弧线路径&#xff0c;通过弧线起始角度及弧线角度控制文本位置更简单。同时基于路径绘制文本时…

Chainlit集成LlamaIndex实现知识库高级检索(简单融合寻回器)

检索原理 ** 简单融合寻回器 ** 简单融合寻回原理&#xff0c;是利用多个检索器&#xff0c;融合查询最终的结果返回给LLM。此检索器还将通过生成与原始问题相关的问题&#xff0c;用相关问题再次检索多个检索器的数据&#xff0c;把原始问题和相关问题经过多个检索器检索结果…

Relations Prediction for Knowledge Graph Completion using Large Language Models

文章目录 题目摘要简介相关工作方法论实验结论局限性未来工作 题目 使用大型语言模型进行知识图谱补全的关系预测 论文地址&#xff1a;https://arxiv.org/pdf/2405.02738 项目地址&#xff1a; https://github.com/yao8839836/kg-llm 摘要 知识图谱已被广泛用于以结构化格式表…

高级java每日一道面试题-2024年9月20日-分布式篇-什么是CAP理论?

如果有遗漏,评论区告诉我进行补充 面试官: 什么是CAP理论&#xff1f; 我回答: 在Java高级面试中&#xff0c;CAP理论是一个经常被提及的重要概念&#xff0c;它对于理解分布式系统的设计和优化至关重要。CAP理论是分布式系统理论中的一个重要概念&#xff0c;它描述了一个分…

【数学分析笔记】第3章第2节 连续函数(4)

3. 函数极限与连续函数 3.2 连续函数 3.2.9 反函数的连续性定理 【定理3.2.2】【反函数连续性定理】设 y f ( x ) yf(x) yf(x)在闭区间 [ a , b ] [a,b] [a,b]上连续且严格单调增加&#xff0c;设 f ( a ) α , f ( b ) β f(a)\alpha,f(b)\beta f(a)α,f(b)β&#xff0…

仓颉编程入门

#体验华为仓颉编程语言# 仓颉发布的第一时间&#xff0c;就申请了测试。昨天发现申请通过 &#xff0c;果断下载SDK体验一下。 废话不多说&#xff0c;从下载完开始&#xff0c;下面这个图&#xff0c;就是下载的文件&#xff1a; 看文件夹样子跟c/c套路差不多。bin目录是cjc…

linux安装nginx+前端部署vue项目(实际测试react项目也可以)

&#x1f9f8;本篇博客作者测试上线过不下5个项目&#xff0c;包括单纯的静态资源&#xff0c;vue项目和react项目&#xff0c;包好用&#xff0c;请放心使用 &#x1f4dc;作者首页&#xff1a;dream_ready-CSDN博客 &#x1f4dc;有任何问题都可以评论留言&#xff0c;作者将…

什么是大模型的泛化能力?

大模型的泛化能力指的是模型在未见过的数据上表现的能力&#xff0c;即模型不仅能在训练数据上表现良好&#xff0c;也能在新的、未知的数据集上保持良好的性能。这种能力是衡量机器学习模型优劣的重要指标之一。 泛化能力的好处包括但不限于&#xff1a; 提高模型的适应性&a…

基于uniapp的民宿酒店预订系统(后台+小程序)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

F28335中断系统

1 中断介绍 1.1 中断概念 1.2 TMS320F28335 中断概述

CUDA并行架构

一、CUDA简介 CUDA(Compute Unified Device Architecture)是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU(Graphics Processing Unit)能够对复杂的计算问题做性能速度优化。 二、串并行模式 高性能计算的关键是利用多核处理器进行并行计算。 串行模式&#…

使用LangGPT提示词让大模型比较浮点数

使用LangGPT提示词让大模型比较浮点数 背景介绍环境准备创建虚拟环境安装一些必要的库安装其他依赖部署大模型启动图形交互服务设置提示词与测试 LangGPT结构化提示词 背景介绍 LLM在对比浮点数字时表现不佳&#xff0c;经验证&#xff0c;internlm2-chat-1.8b (internlm2-cha…

Excel-时间取整,工作有效时长计算

在计算考勤时&#xff0c;打卡时间不是整点&#xff0c;上班时间是遵循整点开始计算的&#xff0c;员工提前打卡&#xff0c;所以要用到时间向上取整。 上班取整&#xff1a; 使用CEILING函数可实现该需求&#xff0c;参考以下公式&#xff0c;第一个参数为上班打卡时间&#…

MySQL篇(窗口函数/公用表达式(CTE))(持续更新迭代)

目录 讲解一&#xff1a;窗口函数 一、简介 二、常见操作 1. sumgroup by常规的聚合函数操作 2. sum窗口函数的聚合操作 三、基本语法 1. Function(arg1,..., argn) 1.1. 聚合函数 sum函数&#xff1a;求和 min函数 &#xff1a;最小值 1.2. 排序函数 1.3. 跨行函数…

一文读懂SpringCLoud

一、前言 只有光头才能变强 认识我的朋友可能都知道我这阵子去实习啦&#xff0c;去的公司说是用SpringCloud(但我觉得使用的力度并不大啊~~)… 所以&#xff0c;这篇主要来讲讲SpringCloud的一些基础的知识。(我就是现学现卖了&#xff0c;主要当做我学习SpringCloud的笔记吧&…

英集芯IP5902:集成电压可调异步升压转换充电管理功能的8位MCU芯片

英集芯IP5902是一款集成了9V异步升压转换、锂电池充电管理及负端NMOS管的8-bit MCU芯片&#xff0c;外壳采用了SOP16封装形式&#xff0c;高集成度和丰富的功能使其在应用时只需很少的外围器件&#xff0c;就能有效减小整体方案的尺寸&#xff0c;降低BOM成本&#xff0c;为小型…

Vue使用axios实现Ajax请求

1、什么是 axios 在实际开发过程中&#xff0c;浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后&#xff0c;官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的介绍…

C#开源的一个能利用Windows通知栏背单词的软件

前言 今天给大家推荐一个C#开源且免费的能利用Windows通知栏背单词的软件&#xff0c;可以让你在上班、上课等恶劣环境下安全隐蔽地背单词&#xff08;利用摸鱼时间背单词的软件&#xff09;&#xff1a;ToastFish。 操作系统要求 目前该软件只支持Windows10及以上系统&…

Scrapy爬虫实战——某瓣250

# 按照我个人的习惯&#xff0c;在一些需要较多的包作为基础支撑的项目里&#xff0c;习惯使用虚拟环境&#xff0c;因为这样能极大程度的减少出现依赖冲突的问题。依赖冲突就比如A、B、C三个库&#xff0c;A和B同时依赖于C&#xff0c;但是A需要的C库版本大于N&#xff0c;而B…