第二十一节:学习Redis缓存数据库的Hash操作(自学Spring boot 3.x的第五天)
这节记录下Redis的Hash操作。主要是opsForHash方式和boundHashOps方式。
boundHashOps
和opsForHash
都是Spring Data Redis中用于操作Redis哈希数据结构的方法,但它们在使用方式和场景上存在一些区别。
boundHashOps
-
使用方式:
boundHashOps
方法通过RedisTemplate的boundHashOps(String key)
方法获取一个BoundHashOperations
实例。这个实例与特定的哈希键(key)绑定,使得后续的操作都是针对这个特定的哈希键进行的。- 这种方式使得操作更加直观和方便,因为一旦绑定了哈希键,就可以通过BoundHashOperations实例提供的方法直接对这个哈希键下的数据进行操作,而无需在每次操作中都指定哈希键。
-
适用场景:
- 当需要对某个特定的哈希键进行频繁的操作时,使用
boundHashOps
可以简化代码,提高开发效率。
- 当需要对某个特定的哈希键进行频繁的操作时,使用
opsForHash
-
使用方式:
opsForHash
方法通过RedisTemplate的opsForHash()
方法获取一个HashOperations
实例。这个实例不是与特定的哈希键绑定的,而是可以直接用于操作Redis中的所有哈希数据结构。- 在进行哈希操作时,需要显式地指定哈希键和字段名。
-
适用场景:
- 当需要在多个哈希键之间进行操作,或者操作的哈希键不是固定的时,使用
opsForHash
可能更加灵活。
- 当需要在多个哈希键之间进行操作,或者操作的哈希键不是固定的时,使用
区别总结
boundHashOps | opsForHash | |
---|---|---|
使用方式 | 通过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种方式我们可以看到,其实方法差不多,只是一个每次操作都要带上哈希键名,一个不需要。
相关文章:

第二十一节:学习Redis缓存数据库的Hash操作(自学Spring boot 3.x的第五天)
这节记录下Redis的Hash操作。主要是opsForHash方式和boundHashOps方式。 boundHashOps和opsForHash都是Spring Data Redis中用于操作Redis哈希数据结构的方法,但它们在使用方式和场景上存在一些区别。 boundHashOps 使用方式: boundHashOps方法通过Redi…...
OpenCV视频I/O(1)视频采集类VideoCapture介绍
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 用于从视频文件、图像序列或摄像头捕获视频的类。 该类提供了用于从摄像头捕获视频或读取视频文件和图像序列的 C API。 以下是该类的使用方法&a…...

CVE-2024-46103
前言 CVE-2024-46103 SEMCMS的sql漏洞。 漏洞简介 SEMCMS v4.8中,SEMCMS_Images.php的search参数,以及SEMCMS_Products.php的search参数,存在sql注入漏洞。 (这个之前就有两个sql的cve,这次属于是捡漏了Ƕ…...

三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)
三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询…) 文章目录 三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)1. …...

Linux 冯诺依曼体系结构与操作系统概念
目录 0.前言 1. 冯诺依曼体系结构概述 1.1 输入单元 1.2 中央处理单元(CPU) 1.3 输出单元 2. 冯诺依曼体系结构的关键特性 2.1 所有数据流向内存 2.2 数据流动示例:QQ聊天过程 3. 操作系统 3.1 概念 3.2 设计操作系统的目的 3.3 操作系统的“…...

UE4中 -skipbuild -nocompile 有什么区别
在项目开发中,我看到了在调用 Engine\\Build\\BatchFiles\\RunUAT.bat 相关的命令行中,有 -skipbuild、 -nocompile 两个很像的参数,于是想探究一下它们的区别与含义。 -skipbuild 参数 到底有没有 -skipbuild 这个参数?根据 http…...
k8s篇之数据挂载类型及区别
一、K8S集群数据挂载类型及区别 在 Kubernetes 中,数据挂载类型主要有以下几种,每种类型适用于不同的场景。以下是主要的挂载类型及其应用场景的详细说明: 1. emptyDir 描述:emptyDir 是一个空目录,其生命周期与 Pod 相同。 它在 Pod 创建时被创建,并在 Pod 删除时被清…...

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大
LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、鉴权直播2、视频点播3、RTMP推流视频直播和点播流媒体服务 1、鉴权直播 鉴权直播-》播放 ,左键单击可以拉取矩形框,放大选中的范围&#x…...
fetch怎么使用
fetch 是一个现代、强大的、基于 Promise 的网络请求 API,用于在浏览器中发起网络请求(如异步获取资源)。它提供了一种更加简洁和灵活的方式来替代 XMLHttpRequest。下面是 fetch 的基本使用方法和一些示例。 基本语法 fetch(url, options)…...

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测
回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SO-SVR蛇群算法优化支持向量机的数据多…...

光耦知识分享:如何挑选合适的可控硅光耦型号
可控硅光耦是一种光电耦合器件,它结合了光敏元件(通常是光敏二极管)和可控硅器件(如普通可控硅或三端可控硅)的特性。它的工作原理是利用光信号控制可控硅的导通和截止,从而实现对电路的控制。 可控硅光耦…...

MySql Explain优化命令使用
MySql Explain优化命令使用 truncate table student // 自增id 从 0 开始 delete from student // 自增id 会保留 , 108 区别: 1:自增id 2:delete 可以恢复 truncate 无法恢复 前言 EXPLAIN 是一个用于获取 SQL 语句执行计划的…...

Android NestedScrollView+TabLayout+ViewPager+ 其它布局,ViewPager 不显示以及超出屏幕不显示问题
前言 此场景为 NestedScrollView 嵌套多个布局 ,大致结构为 NestedScrollViewTabLayoutViewPagerfragment 其它View,如下图 , 一、ViewPager 设置高度才会显示内容问题 原因:NestedScrollView 计算高度先于 ViewPager 渲染前,所…...
Linux开机logo设置
本文介绍Linux开机logo设置。 常用的Linux开机logo设置工具有fbi(Linux Framebuffer Imageviewer),plymouth等,本文针对fbi工具进行开机logo设置。 1.fbi工具安装 命令行下,输入: sudo apt-get install fbi -y 安装完毕后&am…...
webpack插件开发 模拟vue系统登录后,获取a标签下的文件
浏览器插件开发中,在webpack插件开发中,模拟Vue系统登录后获取a标签下的文件,可以通过监听某个登录事件,并在事件处理函数中修改Webpack的输出配置来实现。以下是一个简化的示例代码: // 假设有一个插件构造函数 Logi…...

大规模数据处理:分库分表与数据迁移最佳实践
什么是分库分表 分库分表是一种数据库架构优化策略,它将数据分散存储在多个数据库或表中,以此来提高系统的可扩展性和性能。 虽然分库分表能够提升系统的整体性能,但是也不要一上来就分库分表,如果系统在单表的情况下࿰…...

TCP网络编程概述、相关函数、及实现超详解
文章目录 TCP网络编程概述1. TCP协议的特点2. TCP与UDP的差异3. TCP编程流程 TCP网络编程相关函数详解1. socket():创建套接字参数说明:返回值:示例: 2. connect():客户端连接服务器参数说明:返回值&#x…...

Cluade 3.5 Sonnet 提示词泄露
prompt 翻译: The notebook currently demonstrates support for a two agent setup. Support for GroupChat is currently in development....

git clone代码报错Permission denied (publickey)
git clone gerrit SSH的Clone with commit-msg hook代码连接,报错Permission denied (publickey). 一般在C:\Users\用户名.ssh文件夹下有一个id_rsa.pub文件 把文件里的内容复制 到gerrit网站上User Settings的SSH keys里 在New SSH key里粘贴刚刚复制的内容&…...

QT设计中文输入法软键盘DLL给到C#开发步骤
开发目的:本文提供解决触摸屏C#程序中无法输入中文问题,中文拼音采用开源的谷歌输入法程序、使用QT编译中文输入法界面和中文输入法接口给到C#使用。 开发步骤: 1、QT中设计字母和字符输入界面 2、QT中设计数字输入界面 3、QT中封装调用谷歌…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...