Redis数据类型之(哈希Hash和集合Set)

Redis数据类型-Hash哈希存储类型 Redis的hash哈希存储类型,类似于是java中的map存储结构,适合用来存储对象,每个哈希最多可以存储4294967295(2^32-1)个字段值对,具体数量实际上也受Redis部署的虚拟机上的总内存的限制。理解了它的数据结构后,接下来伟哥带你开启命令操作之旅。 阅读详情

Redis数据类型之(哈希Hash和集合Set)

一定注意看红色注意项。

哈希(Hash):

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

特征:提到hash首先想到Java语言中的hashMap,他的结构也是key-value结构(下面就用字段名和值表示hash里面的key value)。这就相当于redis的里面可以存一个key - (key-value),这有点像json了,只不过就2层。如果有一个用户,他有姓名、年龄、地址等信息。在redis中就可以用hash类型来存储。下面是hash的使用命令。

由于他是string类型的一个映射表,所以他的命令基本都是H开头的String命令:如下

  1. Hset:field相当于字段名,value是值
    HSET key field value
    将哈希表 key 中的字段 field 的值设为 value 。

  2. Hget:
    HGET key field
    获取存储在哈希表中指定字段的值。

  3. Hmset:设置多对字段名和值,成对出现。
    HMSET key field1 value1 [field2 value2 ]
    同时将多个 field-value (域-值)对设置到哈希表 key 中。

  4. Hmget:获取多个字段值
    HMGET key field1 [field2]
    获取所有给定字段的值

  5. Hkeys:获取key 中的所有字段名
    HKEYS key
    获取哈希表中的所有字段

  6. Hvals:获取key 中的所有值
    HVALS key
    获取哈希表中所有值。

  7. Hlen:获取key中的字段数量
    HLEN key
    获取哈希表中字段的数量

  8. Hgetall:获取key中的字段名和值,都输出
    HGETALL key
    获取在哈希表中指定 key 的所有字段和值

  9. Hexists:字段名是否存在
    HEXISTS key field
    查看哈希表 key 中,指定的字段是否存在。

  10. Hdel:删除多个字段
    HDEL key field1 [field2]
    删除一个或多个哈希表字段

  11. Hincrby:可以给字段中的数值增加,比如age:18。可以增加age的值1。1就是加1,如果写-1就是减一,不需要再多加一个减法命令。
    HINCRBY key field increment
    为哈希表 key 中的指定字段的整数值加上增量 increment 。

  12. Hincrbyfloat:上面提到整数增减了,这个是浮点数增减,比如:0.5 就是加0.5,-0.5就是减0.5。注意:如果用浮点型命令加0.5后,就只能使用浮点命令操作了,因为他就变成了浮点型。若果用浮点型给一个整数增加了1,则还可以用整数型命令继续操作,因为数值还是整数。
    HINCRBYFLOAT key field increment
    为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
    在这里插入图片描述

  13. Hsetnx:如果该字段不存在时,设置该字段值
    HSETNX key field value
    只有在字段 field 不存在时,设置哈希表字段的值。

实操:

在这里插入图片描述
这里可以看到我用hmset设置了多组属性,并且设置了两次name。最终查询结果表示name被最后一个设置覆盖了,所以可以说明他具有hashmap的特征,去重。
在这里插入图片描述
这里也支持设置一个空字符串。和hashmap一样。

哈希(Hash)的使用场景:

由于他可以对字段进行数值计算。所以可以在点赞,收藏场景使用,巨鹿用户点赞数,然后每点一次就+1,取消-1,收藏同样。因为他还是key-value结构,用来存储详情页信息等。

  1. 点赞
  2. 收藏
  3. 存储详情页信息

集合(Set):

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

集合对象的编码可以是 intset 或者 hashtable。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

特征:他和Java语言中的set一样,所以具有set的特征。无序和去重

他的命令基本都是S开头:如下

  1. Sadd:member1 是值。如果设置多个同样的值,会自动去重
    SADD key member1 [member2]
    向集合添加一个或多个成员
  2. Scard:返回集合的成员数量有几个
    SCARD key
    获取集合的成员数
  3. Smembers:返回集合中具体的成员
    SMEMBERS key
    返回集合中的所有成员
  4. Srem:删除元素。因为他是无序,所以只能增删,不能改
    SREM key member1 [member2]
    移除集合中一个或多个成员
下面介绍一下他的交、并、差集,应用多
  1. Sinter:返回他们的交集。
    SINTER key1 [key2]
    返回给定所有集合的交集

  2. SinsterStore:把他们交集返回并存储在destination 中。写的时候可以都小写,我只是为了看着清晰,才驼峰写法
    SINTERSTORE destination key1 [key2]
    返回给定所有集合的交集并存储在 destination 中

  3. Sunion:返回他们的并集。
    SUNION key1 [key2]
    返回所有给定集合的并集

  4. SunionStore:把他们并集返回并存储在destination 中。
    SUNIONSTORE destination key1 [key2]
    所有给定集合的并集存储在 destination 集合中

  5. Sdiff:返回他们的差集。**这里需要注意,key1和key2的顺序。key1在前表示返回key1中key2没有的数据,反之则返回key2中key1没有的数据。下面会提到他的具体用处
    SDIFF key1 [key2]
    返回第一个集合与其他集合之间的差异。
    在这里插入图片描述

  6. SdiffStore:把他们差集返回并存储在destination 中。
    SDIFFSTORE destination key1 [key2]
    返回给定所有集合的差集并存储在 destination 中

  7. Smove:
    SMOVE source destination member
    将 member 元素从 source 集合移动到 destination 集合

  8. Spop:随机移除一个 。可以用到抽奖上,抽完且不放回
    SPOP key
    移除并返回集合中的一个随机元素

  9. Srandmember:返回一个或多个随机数。可以用到抽奖可重复中,因为不删除
    SRANDMEMBER key [count]
    返回集合中一个或多个随机数

  10. SisMember:判断元素是否存在
    SISMEMBER key member
    判断 member 元素是否是集合 key 的成员

集合(Set)的使用场景:

由于他可以进行交并差集运算。所以可以在点赞,收藏场景使用,巨鹿用户点赞数,然后每点一次就+1,取消-1,收藏同样。因为他还是key-value结构,用来存储详情页信息等。

  1. 抽奖:
    A:只抽1次,1次抽n个人。
    B:抽多次,比如三等奖抽3名,二等奖抽2名,一等奖抽1名。
    主要利用Set结构元素的不重复性和获取随机数的方法来实现

  2. 微博、微信点赞(文章的收藏)
    微信朋友圈用户A的某条消息的点赞功能,要实现点赞、取消点赞、获取点赞列表、获取点赞用户数量、判断某用户是否点赞过。
    A:点赞 sadd方法

    B:取消点赞 srem方法

    C:获取点赞列表 smembers方法

    D:获取点赞用户数量 scard方法

    E:判断某用户是否点赞过 sIsMember方法

  3. 关注模型
    比如微博关注或者共同好友的问题,以微博关注为例,要实现:同时关注、关注的和、关注A的用户中也关注B的、当A进入B页面,求可能认识的人。

    A:关注和取消关注: sadd方法 和 srem方法

    B:同时关注:求交集

    C:关注的和:求并集

    D:关注A的用户中也有关注B的 注意这里不是取交集,而是在A的用户中判断,是否有关注B的,所以要遍历一遍A的用户:遍历A中的用户,利用sIsMember判断是否也关注B

    E:当A进入B页面,求可能认识的人:这里指的是关注B中的用户 扣去 里面也关注A的用户,就是A可能认识的人。 注意:这里的A和B求差集是有顺序的,比如求A的可能认识的人,就要把B放在A前面:Sdiff B A。仔细思考下是不是这样,要求A的可能认识人,就相当于求B中没有在A中出现的人。反之就是Sdiff A B。

求差集:B-A,A-B

暂时就理解到这儿。

Redis-五大数据类型-Hash(哈希) Hash是一个键值对的集合。Hash 是一个 String 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Hash 是 Redis 中出现最为频繁的复合型数据结构,除了 dict 结构的数据会用到Hash外,整个 Redis 数据 库的所有 key 和 value 也组成了一个全局Hash,还有带过期时间的 key 集合也是一个Hash。 阅读详情

相关推荐

Redis 哈希(Hash)、列表(List)、集合(Set)

Redis提供了多种数据结构类型:哈希(Hash)用于存储对象,支持40亿键值对,包含HSET、HGET等命令管理字段值;列表(List)是字符串的有序集合,支持从头部/尾部添加元素,包含LPUSH、LRANGE等操作命令;集合(Set)是字符串的无序唯一集合,查找复杂度O(1),包含SADD、SMEMBERS等成员操作命令。各类型最大可存储2^32-1个元素,适用于不同数据存储场景。

xiaoaque的博客 840

redis_04_hashset

redis_hashset

一只倔强而老实的虫 2342

Redis数据类型:哈希类型和无序集合

目录 哈希hash类型 HSET和HGET 遍历哈希 HSCAN命令 集合set类型 SADD和SREM 接着往下,Redis数据类型中还有哈希类型(hash)和集合类型(set),这两个相信大家也熟悉,哈希类型以前学习数据结构时不是有哈希表嘛,就是存储数据时建立起字段key和值value之间的映射关系,类似于Java中的map。set集合类型和List类似,Redis中的集合类型相当于一个无序的集合,里面不允许有重复的元素,这篇日志就总结下在Redis中对两个数据类型的一些操作。...

大力海棠的博客 1087

Redis学习文档(Redis基本数据类型【Hash、Set】)

你可以基于 Set 轻易实现交集、并集、差集的操作,比如你可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。当你需要存储一个列表数据,又不希望出现重复数据时,Set 是一个很好的选择,并且 Set 提供了判断某个元素是否在一个 Set 集合内的重要接口,这个也是 List 所不能提供的。Redis 中的 Hash 是一个 String 类型的 field-value(键值对) 的映射表,特别适合用于存储对象,后续操作的时候,你可以直接修改这个对象中的某些字段的值。

cuishujian_2003的博客 1161

redis五种数据类型的常用命令

目录 redis数据类型 字符串String常用命令 哈希hash常用命令 列表list常用命令 集合set常用命令 有序集合sorted set集合的常用命令 redis数据类型 字符串类型(String) 哈希类型(hash) 列表类型(list) 集合类型(set) 有序集合类型(sorted set) 字符串String常用命令 set key value set name huang (设置key 为 name ,value 为 huang) get key

Huang405267467的博客 1905

基于ASP.NET+SQLServer的美妆网站的设计与实现

通过本次ASP.NET MVC美妆商城项目的开发,我们实现了一个功能完善、性能稳定的在线购物平台。该项目不仅提升了用户的购物体验,也为商家提供了一个高效的商品管理和销售渠道。未来,我们将持续优化系统功能,提升用户体验,以适应不断变化的市场需求。

毕业设计大牛哥 1488

Redis6 六:Redis常用五大数据类型—— 集合Set 、 哈希hash 和 有序集合Zset

Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是****O(1)。一个算法,随着数据的增加,执行时间的长短,如果是O(1),数据增加,查找数据的时间不变Set数据结

GQ的博客 1782

Unity海洋渲染实战:Ceto Ocean System核心原理与高级应用指南

实时水面渲染是计算机图形学中的重要课题,涉及波浪模拟、光照交互和着色器编程等核心技术。其原理通常基于物理模型,如使用Gerstner波模拟规则海浪,或通过快速傅里叶变换(FFT)处理频谱数据生成随机海面。这些技术的价值在于能以可控的性能开销,在游戏中实现具有体积感、反射和折射效果的真实水体。在开放世界、海战模拟等应用场景中,专业的海洋系统如Ceto Ocean System,通过模块化架构整合了波浪生成、动态网格和渲染管线,为开发者提供了完整的解决方案。本文深入探讨了其双引擎波浪系统和多层渲染结构,并分享了

weixin_29002595的博客 273

Redis常用数据类型——哈希(Hash)和有序集合 Zset(sorted set)

Redis常用数据类型——哈希(Hash)和有序集合 Zset(sorted set)

qq_47905231的博客 2079

YOLOv8n模型导出ONNX的避坑指南:解决版本差异,正确生成TensorRT/RKNN所需输出节点

本文详细介绍了YOLOv8n模型导出ONNX格式的实战避坑指南,涵盖版本差异处理、代码修改技巧及TensorRT/RKNN部署优化方案。针对不同推理框架需求,提供输出节点生成、动态轴处理和后处理划分等核心问题的解决方案,帮助开发者高效完成模型部署。

weixin_33247358的博客 350

保姆级教程:从零到飞,用QGC地面站搞定PX4无人机全流程配置(含避坑指南)

本文提供了一份详细的QGC地面站使用教程,指导用户从零开始配置PX4无人机,涵盖固件烧录、传感器校准、遥控器设置及航点规划等关键步骤,并包含实用的避坑指南,帮助新手顺利完成首飞。

weixin_30329623的博客 209

Redis 五大数据类型的常用命令——列表、集合、哈希、有序集合

各位小伙伴们大家好,欢迎来到这个小扎扎的Redis 6专栏,在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛

扎哇太枣糕的笔记博客 1506

STM32铅酸蓄电池内阻测试仪的交流阻抗测量与数据采集优化

本文深入探讨了基于STM32的铅酸蓄电池内阻测试仪设计,重点解析了交流阻抗测量原理与数据采集优化方案。通过采用1kHz交流小信号注入和数字相敏检波技术,实现对电池欧姆内阻的无损精准测量,并详细介绍了硬件前端调理、ADC过采样及系统标定等关键优化手段,有效提升了测量精度与稳定性。

weixin_29168393的博客 480

Redis的哈希(Hash)和SET数据类型的异同到底是什么?

【代码】Redis的哈希(Hash)和SET数据类型的异同到底是什么?

长风破浪会有时的博客 1243

【ComfyUI】多模型 户型图风格渲染效果图

本文介绍了一种基于ComfyUI的室内户型图自动渲染工作流,将平面图转换为风格化效果图。该工作流通过RH_Captioner节点识别空间布局,结合Qwen2.5模型优化文本描述,再使用定制室内设计模型生成渲染图。整个流程包含图像输入、空间识别、文本组织、语言生成、风格转换和渲染输出等9个阶段,各节点协同完成从户型图到效果图的全自动转换。系统融合了语言理解和图像生成技术,可广泛应用于室内设计、装修可视化等领域。

Mr数据杨 2995

【OpenClaw从入门到精通】第17篇:OpenClaw巨头布局实战:阿里CoPaw/腾讯云/百度/火山引擎深度拆解(2026实操版)

2026年OpenClaw以22.8万星标登顶GitHub,引发阿里、腾讯、百度、字节等互联网巨头入局角逐。本文基于公开技术文档与实测经验,深度解析四大巨头的OpenClaw布局战略:阿里云CoPaw的全栈托管、腾讯云的流量入口绑定、百度智能云的搜索生态内嵌、火山引擎的极致智力供给。从核心原理、算法构建、实操流程三个维度,提供可直接落地的接入方案,包含完整代码示例与执行结果验证。通过流程图可视化核心架构,搭配避坑指南与选型矩阵,帮助新手快速上手、进阶读者实现多厂商协同部署。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1672

Redis(二)Redis实战操作:预备知识(GET和SET、基本全局命令、常见数据类型和内部编码)、String字符串、Hash哈希、List列表、 Set集合、Zset有序集合、渐进式遍历、数据库

预备知识(GET和SET命令、基本全局命令)、Redis常见数据类型和内部编码(单线程架构、引出单线程模型)、String字符串、Hash哈希、List列表、Set集合、Zset有序集合、不常用类型简介(stream、geospatial、hyperloglog、bitmaps、bitfields)、渐进式遍历和SCAN、数据库管理。

m0_74343467的博客 2642

多物理场耦合仿真-主题032-电磁-流体耦合

电磁-流体耦合,即磁流体动力学(MHD, Magnetohydrodynamics),是研究导电流体在电磁场中运动规律的学科,涉及电磁场与流体力学的深度耦合。本主题系统阐述磁流体动力学的基本理论、控制方程和数值方法。首先介绍MHD的基本概念和物理基础,包括导电流体的性质、电磁场基本方程;然后详细推导MHD控制方程组,包括连续性方程、动量方程、能量方程和电磁场方程;接着讨论MHD流动的特征参数,如Hartmann数、磁雷诺数、相互作用参数等;最后通过六个典型工程案例展示MHD分析的实际应用,包括电磁泵、磁流体

2401_87715305的博客 419

Redis五大数据类型(字符串对象(string)、列表对象(list)、哈希对象(hash)、无序集合(set)和Sorted Set数据类型(zset有序集合))

Redis五大数据类型一.String(字符串)数据类型1.SET/GET/APPEND/STRLEN2.INCR/DECR/INCRBY/DECRBY3.GETSET4. SETEX5.SETNX6.MSET/MGET/MSETNX二.List(列表)数据类型1. LPUSH/LPUSHX/LRANGE2. LPOP/LLEN3. LREM/LSET/LINDEX/LTRIM4. LINSERT5. RPUSH/RPUSHX/RPOP/RPOPLPUSH三.Hash数据类型(散列类型)1. HSET/HG

LI_MINGXUAN的博客 985

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Redis常用数据类型和命令

Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型:字符串 string哈希 hash列表 list集合 set有序集合 sorted set / zset。

m0_62736267的博客 987

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Redis学习(二) -数据类型

reids基本数据类型操作

qq_45084064的博客 2334

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

redis的数据类型

上一章我也简单的介绍了一下,数据类型,这张我们详细进行讲解一下。(有的内容可能会和上一章有重复,大家可以直接跳到自己想看的地方)

2401_85440017的博客 2577

『Redis系列』Redis数据类型详细讲解(set、hash、zset)

Redis的基本数据类型-2 相关视频参考(来自动力节点):https://www.bilibili.com/video/BV1Uz4y1X72A 相关资料下载:http://www.bjpowernode.com/?csdn 1)set (集合) redis的集合和列表都可以存储多个字符串,它们之间的不同在于,列表可以存储多个相同的字符串,而集合则通过使用散列表(hashtable)来保证自已存储的每个字符串都是各不相同的(这些散列表只有键,但没有与键相关联的值),redis中的集合是无序的。还可

weixin_54585403的博客 1230

Redis篇——Redis操作五大数据类型(String、List、Set、Hash、Zset),一篇文章速通!史上最详细、最全面的保姆级命令总结!

关于Redis操作五大数据类型的命令全部总结完毕!命令比较复杂,笔者一次性将其归并到一篇文章里面,希望能够对大家掌握Redis的使用有帮助。建议收藏,反复浏览消化! 后续还会持续更新关于Redis等技术栈分享,敬请期待!

我热爱学习,也乐于分享。无论是科技前沿的洞见,还是生活中的小技巧,我都会在这里与你分享。我相信,知识就是力量,而分享则能让这份力量得到更好的传递。 1200

Redis——五大数据类型(String、Hash、List、Set、ZSet)简要介绍

Redis——五大数据类型(String、Hash、List、Set、ZSet)简要介绍

贝尔摩德苦艾酒 9138

Redis的数据结构string、hash、list、set、zset、HyperLogLog

目录 一:Redis的数据类型 - string(字符串) ​​​​​​​二:Redis的数据类型 - hash(哈希结构) ​​​​​​​​​​​​​​三:Redis的数据类型 - list(列表) ​​​​​​​​​​​​​​四:Redis的数据类型 - set(无序集合) ​​​​​​​​​​​​​​五:Redis的数据类型 - zset(有序集合) ​​​​​​​​​​​​​​六:Redis的数据类型 - HyperLogLog(基数) Redis命令文档参考:http://redis

a898712940的博客 1733
上一篇: Redis数据类型之列表List
下一篇: Redis数据类型之有序集合(sorted set)
养乐多q.♡
博客等级 码龄7年 25粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值