Redis中Hash类的操作

news2024/11/24 2:26:41

Redis中Hash类型是键值对的形式保存数据,其中键被称为字段(field),值称为字段值(value)。在一个key中,字段不能重复,而值可以重复。无论是字段还是值都是无序的(保存的次序和添加的次序不同)

    默认情况下hash使用listpack存储,当保存的字段-值的数量大于512个或者当个字段的值大于64个字节时,改为hashtable。


一、使用场景
1、购物车

    可以使用redis的hash实现购物车,字段为商品的信息,值为数量

2、权限列表

    保存用户的权限,字段为权限的标识 ,值为状态

3、缓存进度

    比如小说的阅读进度,字段为小说编号,值为位置。还比如视频的播放进度,字段为视频编号 ,值为已播放的位置。

二、添加和修改
1、hset

向Hash中添加一到多个字段和值,返回添加成功的数量,如果其中某个字段名已存在,会忽略此字段的添加

语法

hset key field value [field value ...]

示例

//添加两个商品类型,添加成功,返回2
hset product_type 1 家电  2 鞋帽

//字段1已存在,只会添加3,返回1
hset prouct_type 1 果蔬 3 成衣

2、hmset

    向hash中添加一到多个字段和值,与hset不同的是,当字段已存在,它会替换原来的值,如果成功,返回“OK”

语法

hmset key field value [field value ...]

示例

//添加两个商品类型,2会把之前的鞋帽替换,返回OK
hmset product_type 2 '手机' 6 '数码'

3、hsetnx

    仅当字段不存在时,才会添加此字段和值,成功返回1,失败返回0

语法

hsetnx key field value

示例

//添加一个新的字段
hsetnx product_type 7 '保健'

三、删除
1、hdel 

    删除一个或多个字段,返回实际删除的字段数量

语法

hdel key field [field ...] [exists match field]

其中

exists match为判断条件,如果指定字段存在,则删除此字段,否则不删除

示例

//删除1和9两个字段
hdel product_type 1 9

//如果3存在,则删除
hdel product_type exists match 3

四、查看
1、hexists

    用于判断指定的字段是否存在,如果存在返回1,不存在返回0

语法

hexists key field

示例

//判断字段2是否存在
hexists product_type 2

2、hlen

    用于查看字段的数量

语法

hlen key

示例

hlen product_type

3、hgetall

    查看所有的字段和值,返回的结果的格式为 

字段名
字段值
字段名
字段值
........ 

语法

hgetall key

示例

hgetall product_type

4、hkeys

    查看所有字段的名称,返回字段名列表

语法

hkeys key

示例

hkeys product_type

5、hvals

    查看所有的值,返回字段值列表

语法

hvals key

示例

hvals product_type

6、hget

    查看指定字段的值,如果字段不存在,返回null

语法

hget key field

示例

hget product_type 2

7、hmget

    查看一到多个字段的值,如果字段不存在,对应的值返回为null

语法

hmget key field [field ...]

示例

hmget product_type 1 2 3

8、hscan

    以游标的方式查看所有或符合条件的字段和值

语法

hscan key cursor [MATCH pattern] [COUNT count]

其中 

    cursor:为游标名,一般为0,即游标开始的位置

   match:筛选条件,pattern为条件,可以使用“*”做为通配符来进行模糊匹配

    count:从指定的游标开始,在此指定字段数中查询,默认值为10,在默认情况(存储结构不是hashtable)下此值无效,只有当hash中字段数大于512或者某个字段的值的长度大于64个字节的时候才有效(ziplist存储结构会转换成hashtable)。

    但要注意的是实际查询的数量会等于或大于count,特别是指定了match时。

示例

//查看所有字段和值
hscan product_type 0

//查看所有字段
hscan product_type 0 match '*'

//查看字段名中包含1的字段
hscan product_type 0 match '*1*'

//返回前2个字段
hscan product_type 0 count 2

9、hincrby

    为字段添加指定的整数增量,如果此字段的值不是数值,会提示错误“ERR hash value is not an integer”,如果成功返回增加增量后的值

语法

hincrby key field increment

示例

//添加一个整数值的字段
hset product_type 11 '11'

//字段值加3
hincrby product_type 11 3

10、hincrbyfloat

    为字段添加指定的浮点数增量,如果此字段的值不是数值,会提示错误“ERR hash value is not an integer”,如果成功返回增加增量后的值

语法

hincrbyfloat key field increment

示例

//添加一个整数值的字段
hset product_type 10 '10'

//字段值加2.5
hincrbyfloat product_type 10 2.5

11、hstrlen

    查询值的字节数

语法

HSTRLEN key field

示例

hstrlen product_type 10

 文章来源于哔站《Redis中Hash类的操作》

更多学习视频和专栏文章请到哔站个人空间: 布道师学院的个人空间-布道师学院个人主页-哔哩哔哩视频

更多资源和项目下载请到:”开源吧(找实战项目和毕设项目的好网站)“ ​ :开源吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1057328.html

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

相关文章

React封装自定义表单校验方法

一、表单校验 为什么要封装自定义表单校验方法,因为在后台管理系统中,通常我们会涉及到用户的添加或则信息的修改,这时候通常就涉及表单的相关校验。但通常一个系统中的表单校验针对同一个字段来说是统一的。因此我们就需要将对应的校验字段的…

【LeetCode热题100】--98.验证二叉搜索树

98.验证二叉搜索树 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 由于二…

41 二叉树的层序遍历

二叉树的层序遍历 题解1 迭代——BFS题解2 递归——DFS 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 提示&#xff1a; 树中节点数目在范围 [0, 2000] 内-1000 < Node.val <…

实时目标检测:基于YOLOv3和OpenCV的摄像头应用

一、前言 随着人工智能和计算机视觉技术的不断发展,目标检测成为了智能监控、自动驾驶、机器人等领域的关键技术之一。实时目标检测更是对系统的反应速度和准确度提出了更高的要求。本文介绍使用OpenCV和YOLOv3实现实时目标检测的方法,演示如何使用OpenCV调用YOLOv3模型进行…

基于SSM的选课排课系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

克服网络安全压力:如何掌控无限的云数据

管理云中的数字风险比以往任何时候都更加重要。数字化转型引发的云数据呈指数级增长&#xff0c;为安全分析师创造了一个更大的威胁环境。随着威胁行为者继续危害组织最敏感的数据&#xff0c;这一挑战将会加剧。 预计未来五年全球网络犯罪成本将激增&#xff0c;从 2022 年的…

22-框架

框架 解决某类问题&#xff0c;编写的一套类、接口等&#xff0c;可以理解成一个半成品&#xff0c;大多框架都是第三方研发的。 好处&#xff1a;在框架的基础上开发&#xff0c;可以得到优秀的软件架构&#xff0c;并能提高开发效率 框架的形式&#xff1a;一般是把类、接口…

有向图计数优化版原理及C++实现

题目 见前面章节。有向图访问计数的原理及C实现-CSDN博客 第一版 不需要拓扑排序&#xff0c;也不需要并集查找&#xff0c;直接dfs了。完成以下三个职责&#xff1a; 一&#xff0c;DFS那些端点在环上。 二&#xff0c;DFS环上各点此环的长度。 三&#xff0c;DFS非环上各点…

C# 画参数可调调幅波

参阅此&#xff0c; 使用VC输出调幅波的数值和波形_c如何显示下位机传输过来的频谱信号 csdn_bcbobo21cn的博客-CSDN博客 用winform做一下&#xff1b; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Dra…

16-自动化测试——selenium介绍

目录 1.selenium是什么&#xff1f; 2.selenium特点 3.selenium工作原理 1.selenium是什么&#xff1f; selenium是web应用中基于UI的自动化测试框架。 2.selenium特点 支持多平台多浏览器多语言&#xff08;Java、Python、C#、JS、Ruby......&#xff09;有丰富的API 3…

目标检测算法改进系列之Backbone替换为ConvNextV2

ConvNextV2 受掩码自编码机制的启发&#xff0c;本文在 ConvNeXt 的架构基础上延伸出了一个完全卷积掩码自编码器框架——ConvNeXt V2&#xff0c;同时作者设计了一个全新的全局响应归一化(Global Response Normalization, GRN)层以增强原始 ConvNeXt 模块通道间的特征竞争&am…

SpringBoot注册web组件

目录 前言 一、注册Servlet组件 1.1 使用SpringBoot注解加继承HttpServet类注册 1.2 通过继承HttpServet类加配置类来进行注册 二、注册Listener组件 2.1 使用SpringBoot注解和实现ServletContextListener接口注册 2.2 ServletContextListener接口和配置类来进行注册 …

基于YOLOv8的安全帽检测系统(2):Gold-YOLO,遥遥领先,助力行为检测 | 华为诺亚NeurIPS23

目录 1.Yolov8介绍 2.安全帽数据集介绍 3.Gold-YOLO 4.训练结果分析 1.Yolov8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的&#xff08;SOTA&#xff09;模型&#xff0c;它建立在先前YOLO成功基础上…

js 如何判断一个指定的位置点坐标是否落在一个多边形区域内?

1 场景 业务场景举例&#xff1a;快递选择收获区域、车辆电子围栏、运动轨迹路线、地理位置信息检测范围和地图等过滤等等。   比方说地图上有一块区域&#xff08;抽象成多边形&#xff09;&#xff0c;然后里面每一个位置点(像素点)都有对应的GPS的经纬度坐标值&#xff0c…

如何破解压缩包zip解压密码?

Zip压缩包设置了密码&#xff0c;解压的时候就需要输入正确对密码才能顺利解压出文件&#xff0c;正常当我们解压文件或者删除密码的时候&#xff0c;虽然方法多&#xff0c;但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么&#xff0c;忘记了zip压缩包的密…

【C++】模板初阶 -- 详解

一、泛型编程 // 实现一个通用的交换函数&#xff1a; void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp left;left right;right temp; }void Swap(char& left, ch…

Multisim14.0仿真(二十八)74LS13 施密特触发器

一、仿真原理图&#xff1a; 二、仿真效果图&#xff1a;

华为云云耀云服务器L实例评测|Elasticsearch的springboot整合 Kibana进行全查询和模糊查询

前言 最近华为云云耀云服务器L实例上新&#xff0c;也搞了一台来玩&#xff0c;期间遇到各种问题&#xff0c;在解决问题的过程中学到不少和运维相关的知识。 在前几期的博客中&#xff0c;介绍了Elasticsearch的Docker版本的安装&#xff0c;Elasticsearch的可视化Kibana工具…

【c语言】推箱子

所需知识&#xff1a;c语言枚举&#xff0c;数组&#xff0c;for循环&#xff0c;while循环&#xff0c;switch,case语句&#xff0c;图形库相关函数 1.调整控制台窗口大小 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h>#include <stdio.h> int main() {…

MySql017——组合查询

一、UNION作用 可用UNION操作符来组合数条SQL查询。 二、UNION 使用规则 1、UNION的使用很简单。所需做的只是给出每条SELECT语句&#xff0c;在各条语句之间放上关键字UNION。2、UNION必须由两条或两条以上的SELECT语句组成&#xff0c;语句之间用关键字UNION分隔&#xff…