Redis数据类型-Hash哈希存储类型

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

一. 背景说明

小白:伟哥,java中的Map集合类型在Redis中有对应的存储吗?
伟哥:有的,我带你撸一波。

二. 概述

Redis的hash哈希存储类型,类似于是java中的map存储结构,适合用来存储对象,每个哈希最多可以存储4294967295(2^32-1)个字段值对,具体数量实际上也受Redis部署的虚拟机上的总内存的限制。

Redis数据类型-Hash哈希存储类型,Java,redis,哈希算法,数据库

理解了它的数据结构后,接下来伟哥带你开启命令操作之旅。

三. hset、hget

hset、hget主要用来设置和获取单条数据,格式说明如下:
暂时无法在飞书文档外展示此内容

#贴心测试如下:
 #设置值  hset key field value
192.168.65.15:6379> hset u1 name zs 
(integer) 1   

#获取值 hget key field
192.168.65.15:6379> hget u1 name  
"zs"

#获取值:如果key不存返回nil
192.168.65.15:6379> hget u2 name  
(nil)

#获取值:如果field不存返回nil
192.168.65.15:6379> hget u1 name1  
(nil)

四. hmset、hmget

上述一条一条地增加数据有点繁琐,为此,Redis准备了多条数据的操作,格式如下:
暂时无法在飞书文档外展示此内容

#贴心测试如下:
#批量设置值
192.168.65.15:6379> hmset u1 name zs age 22 sex boy  
OK

#批量获取值,按field顺序显示
192.168.65.15:6379> hmget u1 name age sex   
1) "zs"
2) "22"
3) "boy"

#如果key不存在,则返回nil
192.168.65.15:6379> hmget u2 name  
1) (nil)

#如果field不存在,则返回nil
192.168.65.15:6379> hmget u1 name name1  
1) "zs"
2) (nil)

五. hincrby、hsetnx

如果value是数值类型,我们可以用hincrby来增加大小;在添加时如果key-field不存在,才实现添加,可以用hsetnx命令。具体格式如下:
暂时无法在飞书文档外展示此内容

#贴心测试如下:
#查看age原来的值
192.168.65.15:6379> hget u1 age  
"22"

#hincrby给age增加5
192.168.65.15:6379> hincrby u1 age 5  
(integer) 27

#查看增加后的结果22+5=27
192.168.65.15:6379> hget u1 age  
"27"

#hsetnx设置如果field存在,则不添加 
192.168.65.15:6379> hsetnx  u1 age 22  
(integer) 0

#查看age还是27,没有变化
192.168.65.15:6379> hget u1 age  
"27"

#hsetnx设置如果field不存在,添加 
192.168.65.15:6379> hsetnx u1 age1 22 
(integer) 1

#查看age1是22
192.168.65.15:6379> hget u1 age1   
"22"

六. hexists、hgetall、hkeys、hvals、hlen

在查询时,有时我们需要知道key是否存在?存在的话有多少个field?如何显示所有的内容?如何显示所有的field或者value?为解决这些问题,伟哥帮你收集以下命令来解决:
暂时无法在飞书文档外展示此内容

#贴心测试如下:
#检查field是否存在
192.168.65.15:6379> hexists u1 age  
(integer) 1

#如果key不存在,返回0
192.168.65.15:6379> hexists u2 age  
(integer) 0

#如果field不存在,返回0
192.168.65.15:6379> hexists u1 age2  
(integer) 0

#获取u1结构中的全部field和value
192.168.65.15:6379> hgetall u1 
1) "name"
2) "zs"
3) "age"
4) "27"
5) "sex"
6) "boy"
7) "age1"
8) "22"

#获取u1结构中的全部field
192.168.65.15:6379> hkeys u1 
1) "name"
2) "age"
3) "sex"
4) "age1"

#获取u1结构中的全部value
192.168.65.15:6379> hvals u1 
1) "zs"
2) "27"
3) "boy"
4) "22"

#获取u1结构中field的数量
192.168.65.15:6379> hlen u1 
(integer) 4

七. hdel

我们一般用的删除单词是remove 和delete,这里删除用的是hdel,h表示hashes,del表示delete,具体如下:
暂时无法在飞书文档外展示此内容

#贴心测试如下:
#查看u1的数据
192.168.65.15:6379> hgetall u1  
1) "name"
2) "zs"
3) "age"
4) "27"
5) "sex"
6) "boy"
7) "age1"
8) "22"

#删除u1中 age1和 sex的数据
192.168.65.15:6379> hdel u1 age1 sex  
(integer) 2

#查看删除结果
192.168.65.15:6379> hgetall u1  
1) "name"
2) "zs"
3) "age"
4) "27"

 文章来源地址https://www.toymoban.com/news/detail-530682.html

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

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

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

相关文章

  • Redis数据结构:Hash类型全面解析

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

    2024年02月10日
    浏览(38)
  • 【Redis从头学-6】Redis中的Hash数据类型实战场景之购物车

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Redis从头学 之前的篇章对Redis的String、List数据类型已经做出了具体分析,并举例说明了其具体的实战场景。本文就结合

    2024年02月11日
    浏览(42)
  • redis—Hash哈希

    目录 前言 1.常见命令 1.1命令小结 1.2内部编码 2.使用场景 几乎所有的主流编程语言都提供了哈希(hash) 类型,它们的叫法可能是哈希、字典、关联数组、映射。在Redis中,哈希类型是指值本身又是一个键值对结构,形如key= \\\"key\\\", value={{ field1, value1 }, ... {fieldN, valueN }}, Redis 键值对

    2024年02月04日
    浏览(44)
  • Redis 哈希( Hash )

    【一】简介   Redis hash 是一个键值对集合。  Redis hash 是一个 string 类型的  field  和  value  的映射表, hash 特别适合用于存储对象。 类似 Java 里面的 Map String , Object   用户 ID 为查找的 key ,存储的 value 用户对象包含姓名,年龄,生日等信息,如果用普通的 key/value 结构来存

    2024年02月12日
    浏览(50)
  • Redis 中如何设置 Hash 数据类型的过期时间?

    在 Redis 中可以通过 setex 或 expire 方式来设置 key 的过期时间。但是对于 Hash 数据类型 Redis 是不支持的,所以我们需要使用“曲线救国”的方式去实现 Hash 数据类型的过期时间。 即,先对 Hash 数据类型赋值,然后再对 Hash 数据类型的 key 设置一个过期时间,这样就间接的实现了

    2024年02月12日
    浏览(35)
  • 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日
    浏览(41)
  • 【Redis】Redis 哈希 Hash 键值对集合操作 ( 哈希 Hash 键值对集合简介 | 查询操作 | 增加操作 | 修改操作 )

    Redis 中的 Hash 数据 是一个 键值对集合 , 类似于 Java 中的 Map 集合 ; Hash 数据底层数据结构是 : 压缩列表 ZipList : Hash 中的 键值对 长度较短时 使用 压缩列表 ; 哈希表 HashTable : Hash 中的 键值对 长度较长时 使用 哈希表 ; Redis 中存储对象的方式 : 存储序列化之后的数据 : 将 对象

    2024年02月15日
    浏览(44)
  • Redis学习2 - 哈希(Hash)

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

    2023年04月18日
    浏览(50)
  • Redis命令---Hash(哈希)篇 (超全)

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

    2024年02月19日
    浏览(41)
  • 【Redis】Hash 哈希内部编码方式

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

    2024年02月07日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包