千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Hash哈希存储类型

Hash哈希存储类型

来源:千锋教育
发布人:zyh
时间: 2023-06-13 13:14:00 1686633240

  一. 概述

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

1683620484331.image

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

  二. 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"
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT