Redis 哈希( Hash )

这篇具有很好参考价值的文章主要介绍了Redis 哈希( Hash )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【一】简介 

Redis hash 是一个键值对集合。

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

类似 Java 里面的 Map < String , Object >

 用户 ID 为查找的 key ,存储的 value 用户对象包含姓名,年龄,生日等信息,如果用普通的 key/value 结构来存储

主要有以下2种存储方式

方法一:

        key                        序列化的 value 对象

                        >>>>                姓名数据

用户 ID         >>>>>>               年龄数据

                        >>>>                生日数据

每次修改用户的某个属性需要先反序列化,改好以后,再序列化回去,开销较大。

方法二:

        key                                                   Value

用户 ID + 姓名标签        >>>>                姓名数据

用户 ID + 年龄标签        >>>>                年龄数据

用户 ID + 生日标签        >>>>                生日数据

用户 ID 数据冗余

还有第三种:

        key                                               Hash

                                                  field                value

                        >>>>              姓名标签         姓名数据

用户 ID         >>>>>>             年龄标签         年龄数据

                        >>>>              生日标签         生日数据

通过 key (用户 ID)+ field (标签属性)口可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题。

【二】常用命令

 hset <key> <field> <value>

给 <key> 集合中的 <field> 键赋值 <value>

 hget <key> <field>

从 <key> 集合中取出 <field> 对应的 value

 hmset <key> <field1> <value1> <field2> <value2> <field3> <value3> ...

批量设置 hash 的值

 hexists <key> <field>

查看 <key> 中是否存在 <field>

 hkeys <key>

列出该 hash 集合所有 field

 hvals <key>

列出该 hash 集合中所有的 value

 hincrby <key> <field> <increment>

为哈希表 <key> 中的域 <field> 的值加上增量 1 -1

 hsetnx <key> <field> <value>

将哈希表 <key> 中的域 field 的值设置为 value ,当且仅当域 field 不存在

【三】数据结构

 Hash 类型对应的数据结构是两种: ziplist (压缩列表), hashtable (哈希表)。当 field-value 长度较短且个数较少时,使用 ziplist ,否则使用 hashtable。文章来源地址https://www.toymoban.com/news/detail-652877.html

到了这里,关于Redis 哈希( Hash )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis学习2 - 哈希(Hash)

    Hash操作 Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。 Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿) 1. Hset Hset 命令用于为哈希表中的字段赋值 。 如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。 如果字段已

    2023年04月18日
    浏览(47)
  • 【Redis】Hash 哈希内部编码方式

    哈希的内部编码有两种: ziplist(压缩列表):当哈希类型元素个数⼩于hash-max-ziplist-entries配置(默认512个)、同时所有值都⼩于hash-max-ziplist-value配置(默认64字节)时,Redis会使⽤ziplist作为哈希的内部实现,ziplist使⽤更加紧凑的结构实现多个元素的连续存储,所以在节省内

    2024年02月07日
    浏览(41)
  • Redis命令---Hash(哈希)篇 (超全)

    可用版本: = 2.0.0 返回值: 如果命令执行成功,返回 OK 。 可用版本: = 2.0.0 返回值: 一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。 可用版本: = 2.0.0 返回值: 如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段

    2024年02月19日
    浏览(39)
  • ②【Hash】Redis常用数据类型:Hash [使用手册]

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ redis hash 是一个String类型的field(字段)和value(值)的映射表。 redis中每个hash可以存储2^32-1个键值对(40多亿

    2024年02月04日
    浏览(47)
  • Redis数据结构之——hash

    以下内容是基于Redis 6.2.6 版本整理总结 Redis中hash数据类型使用了两种编码格式:ziplist(压缩列表)、hashtable(哈希表) 在redis.conf配置文件中,有以下两个参数,意思为:当节点数量小于512并且字符串的长度小于等于64时,会使用ziplist编码。 ziplist 我们整理在下一篇文章。 Redis中的

    2023年04月26日
    浏览(34)
  • Redis之hash数据结构

             Redis的hash数据结构是一个string数据类型的域和值的映射表 ,,hash数据的类型常常用来存储 对象的信息,每个hash数据结构可以存储2^32-1个键值对, 设置的哈希表域的值(HSET):         使用 HSET设置hash表的key中的field的值设置为value,当这个的key不存在的是的,将

    2024年02月11日
    浏览(38)
  • Redis Hash数据结构探秘

    在网上看了不少文章都是指导使用方式,要不就是老版本的redis结构,干脆我就自己看源码瞅瞅怎么个事。 本文主要说明的是数据结构和hash的基本操作原理,不是API文档,有想知道的API请自行查阅文档和代码。 : ziplist、hashtable、listpack、rehash、dict。 先说明 ziplist 和

    2024年02月20日
    浏览(38)
  • Redis数据结构:Hash类型全面解析

    Redis,作为一个开源的、内存中的数据结构存储系统,以其出色的性能和灵活的数据类型,广泛应用于缓存、消息队列、发布订阅系统等多种场景。在 Redis 的五种基本数据类型中,Hash 类型是一种非常重要的数据类型。它可以存储键值对的集合,且能够用小于1毫秒的时间复杂

    2024年02月10日
    浏览(37)
  • redis的hash数据结构底层简记

    hash:k和v都是string的hash表。 HSET(设置集合数据,4.0之前只能设置1个,之后可以设置多个),HSETNX(若k不存在则设置对应v),HDEL(删除指定kv,可以一次删除多个),DEL(删除Hash对象),HMSET(设置多个kv,4.0之后废弃),HGETALL(查找全部数据),HGET(查询k对应的v),HLEN(查

    2024年02月21日
    浏览(33)
  • Redis关于Hash类型数据的操作,使用redisTemplate

    因为在redis的Hash数据类型里,有内层外层两个key,而且有内层外层两个map集合,所以暂时先称外层key为大key,内层key为小key,外层map为大map,内层map为小map,内层value值为value。 1.根据大key和小key还有value的值,设置一个value: 2.根据大key和小key获取到value值: 3.根据大key获取小

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包