全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货  >  详情

Redis数据类型-Hash

来源:千锋教育
发布人:gxy
2023-05-29

推荐

在线提问>>

  一. 背景说明

hash

  小白:老师,java中的Map集合类型在Redis中有对应的存储吗?

  老师:有的,我带你撸一波。

  二. 概述

  Redis的hash哈希存储类型,类似于是java中的map存储结构,适合用来存储对象,每个哈希最多可以存储4294967295(2^32-1)个字段值对,具体数量实际上也受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"

 

相关文章

什么是事件对象?事件对象的使用

什么是单体应用?如何理解

Redis数据类型-Hash

setState在哪个生命周期不能用?

java面试之消息队列

开班信息 更多>>

课程名称
全部学科
咨询

HTML5大前端

Java分布式开发

Python数据分析

Linux运维+云计算

全栈软件测试

大数据+数据智能

智能物联网+嵌入式

网络安全

全链路UI/UE设计

Unity游戏开发

新媒体短视频直播电商

影视剪辑包装

游戏原画

    在线咨询 免费试学 教程领取