Redis中Hash类的操作

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.rhkb.cn/news/147498.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 大厂八股文面试专题-JVM相关面试题 垃圾回收算法 GC JVM调优

Java 大厂八股文面试专题-JVM相关面试题 类加载器_软工菜鸡的博客-CSDN博客 3 垃圾收回 3.1 简述Java垃圾回收机制?(GC是什么?为什么要GC) 难易程度:☆☆☆ 出现频率:☆☆☆ 为了让程序员更专注于代码的实现…

【Flink】

事件驱动型应用 核心目标:数据流上的有状态计算 Apache Flink是一个框架和分布式处理引擎,用于对无界或有界数据流进行有状态计算。 运行逻辑 状态 把流处理需要的额外数据保存成一个“状态”,然后针对这条数据进行处理,并且更新状态。这就是所谓的“…

MySQL explain SQL分析工具详解与最佳实践

目录 一、explain工具介绍二、添加示例表和数据用于后续演示三、explain中的列3.1、id列3.2、select_type列3.3、table列3.4、partitions列3.5、type列NULLsystemconsteq_refrefrangeindexALL 3.6、possible_keys列3.7、key列3.8、key_len列3.9、ref列3.10、rows列3.11、filter…

HDFS最基础使用

文章目录 一、简介1、定义2、HDFS优缺点3、HDFS组成架构4、HDFS文件块大小 二、HDFS的读写流程1、HDFS写数据流程2、HDFS读数据流程3、网络拓扑-节点距离计算4、机架感知(副本存储节点选择) 三、NameNode和SecondaryNameNode1、NN和2NN工作机制2、Fsimag…

Linux关于gittee的远端仓库的连接和git三板斧

目录 1.网页操作 2.Linux操作 查看Linux系统中是否安装git指令 安装git指令 链接远端仓库 设置 .gitignore文件 3.git三板斧 1.网页操作 首先我们要在gittee建立一个仓库 这是我自己的勾选方案,大家可以参考一下。 这个方案勾选最下面的三个选项才有&#x…

java图书管理系统

一、 引言 图书管理系统是一个用于图书馆或书店管理图书信息、借阅记录和读者信息的应用程序。本系统使用Java Swing框架进行开发,提供直观的用户界面,方便图书馆管理员或书店工作人员对图书信息进行管理。以下是系统的设计、功能和实现的详细报告。 二…

最新整理源码面试题

经典框架源码面试题 Lecture:波哥 1.谈谈你对框架的理解 1.1 框架的作用 JavaWeb中的框架是一种开发工具或者平台,它提供了一系列的功能和组件,用于简化和加速Web应用的开发过程。框架可以提供一些基础设施,如数据库访问、用户认…

ISP图像信号处理——白平衡校正和标定介绍以及C++实现

从数码相机直接输出的未经过处理过的RAW图到平常看到的JEPG图有一系列复杂的图像信号处理过程,称作ISP(Image Signal Processing)。这个过程会经过图像处理和压缩。 参考文章1:http://t.csdn.cn/LvHH5 参考文章2:htt…

基于蜉蝣优化的BP神经网络(分类应用) - 附代码

基于蜉蝣优化的BP神经网络(分类应用) - 附代码 文章目录 基于蜉蝣优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.蜉蝣优化BP神经网络3.1 BP神经网络参数设置3.2 蜉蝣算法应用 4.测试结果:5.M…

AAD基础知识(identity/token/PRT)

简介 AAD(Azure Active Directory/Azure AD)是微软基于云身份验证和访问控制的解决方案,通过SSO登录其他o365应用(word/outlook/teams…) 微软在2023年7月把AAD重命名为Microsoft Entra ID,官网:https://www.microsoft.com/zh-cn/security/b…

【多任务案例:猫狗脸部定位与分类】

【猫狗脸部定位与识别】 1 引言2 损失函数3 The Oxford-IIIT Pet Dataset数据集4 数据预处理4 创建模型输入5 自定义数据集加载方式6 显示一批次数据7 创建定位模型8 模型训练9 绘制损失曲线10 模型保存与预测 1 引言 猫狗脸部定位与识别分为定位和识别,即定位猫狗…

通过 HelpLook ChatBot AI自动问答机器人降低客户服务成本

在当今竞争激烈的商业环境中,提供卓越的客户服务对于维持忠诚的客户群和推动业务增长至关重要。客户服务涵盖了公司与其客户之间的所有互动,包括解答问题、解决问题和提供支持。它在塑造客户对品牌的看法方面起着关键作用,并且可以显著影响他…

C语言判断语句

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。 下面…

react create-react-app v5 从零搭建(使用 npm run eject)

前言: 好久没用 create-react-app做项目了,这次为了个h5项目,就几个页面,决定自己搭建一个(ps:mmp 好久没用,搭建的时候遇到一堆问题)。 我之前都是使用 umi 。后台管理系统的项目 使用 antd-…

DevExpress ChartControl 画间断线

效果如下: 解决办法:数据源间断位置加入double.NaN demo下载

动态链接那些事

1、为什么要动态链接 1.1 空间浪费 对于静态链接来说,在程序运行之前,会将程序所需的所有模块编译、链接成一个可执行文件。这种情况下,如果 Program1 和 Program2 都需要用到 Lib.o 模块,那么,内存中和磁盘中实际上就…

Sui第五轮资助: 17个项目共获105万美元资助金

近日,Sui基金会宣布17个项目获得了105万美元的资助,用于建设项目以推动Sui的采用和发展。要获得资助,项目必须提交详细的提案,说明构建的项目、预算明细、关键里程碑、团队经验,以及对Sui社区的预期贡献。了解更多Sui资…

Azure Arc 概要:功能、管理和应用场景详解,AZ900 考点示例

文章目录 本文大纲一、什么是 Azure Arc二、使用 Azure Arc 可以做什么操作三、使用 Azure Arc 可以管理什么资源3.1 如何使用Azure Arc与服务器? 四、Azure Arc 支持的主要场景五、在 AZ900 中的考点示例5.1 示例题 15.2 示例题 2 本文大纲 本文思维导图概述的主要内容&…

已解决 Bug——IndexError: index 3 is out of bounds for axis 0 with size 3问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

软件工程与计算总结(二)软件工程的发展

本章开始介绍第二节内容,主要是一些历史性的东西~ 一.软件工程的发展脉络 1.基础环境因素的变化及其对软件工程的推动 抽象软件实体和虚拟计算机都是软件工程的基础环境因素,它们能从根本上影响软件工程的生产能力,而且是软件工程无法反向…