redis 获取 hset 所有_Redis系列(三)、数据类型之哈希Hash

这篇博客介绍了Redis中的哈希类型(Hash),包括命令行模式和Python客户端的使用方法,如hset、hmset、hget、hdel等命令,以及如何进行增、删、改、查、计数、设置过期时间等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis支持五种数据类型:String, Hash, List, Set, ZSet,这个系列介绍一下如何使用这些数据类型,本篇介绍使用命令行模式以及python客户端对redis进行操作,实际项目的过程中也大多是一模一样的用法。

相关内容:

Redis系列(一)、CentOS7下安装Redis6.0.3稳定版

Redis系列(二)、数据类型之字符串String 

------------------------Redis哈希类型----------------------

介绍

哈希类型是指键值对里的value本身存储的也是一个个的KV键值对,类似于python中的dict和java中的map集合。

hash_value={{field1,value1},...{fieldN,valueN}}

hkey-->hvalue

hvalue{k1:v1 ,k2:v2 ,k3:v3...}

命令行模式

进入命令行模式:

redis-cli -a password_value redis-cli -a password_value --raw--raw 避免中文显示乱码

 2c9d43cfc7b136fc223ce9b12a6e52af.png

help

使用下面的命令查看手册:

help @hash

9182002d130d92355b3dc7caf495b744.png

hexists

查看hash类型的key中指定的field是否存在,返回true / false, 1/0

hexists key field

 bec972532e1fa6f988a94829ab7a27ee.png

hset

可设置hash类型的单个field或一次性设置多个field

HSET key field value [field value ...]

hset csdn id 1 name wyk company 优快云

hset csdn gender male

84bc84380b51be0e34be81002d5295ef.png

hmset

redis6版本中与hset效果一样

hsetnx

只有value中不存在的field才会被创建,若field已存在则不做任何动作:

HSETNX key field value

98bcc317cd012c64559e05cceddb12ae.png

hdel

使用hdel命令删除hash类型的value中的fields,可批量可单个删除:

HDEL key field1 [field2 ...]

 ec6095e05dc70f4c473d8d1415708a3a.png

hset

和上面介绍的使用方式一样,对hash类型中相同的field进行set操作会更新该field的值:

HSET key field value [field value ...]

69fdb98687879c521ca1afc1f66aad55.png

hget

使用hget获取指定hash类型的field对应的值:

HGET key field

 7af929dafae07568b5136200b221856a.png

hmget

使用hget获取指定hash类型的多个field对应的值:

HMGET key field [field ...]

8fc5cab547b75a767b4cf58f1d28a844.png

hgetall

使用hgetall获得指定hash类型对象的全部field和对应的value值:

HGETALL key

 cfdee5f03f07fe0a6407180810567d34.png

hkeys

使用hkeys获得指定hash类型对象的全部field:

HKEYS key

c181fa24f097a862bff3ac2a6c91fe2a.png

hvals

使用hvals获得指定hash类型对象的全部field的values值:

HVALS key

6ac766072476e52ca833ce3d2b1d9af2.png

计数

hincrby

与string类型中的incrby类似,hincrby可以对hash对象的指定的field的value做递增操作,increment必须是整数(hash类型中没有hdecrby方法,当increment为负数时为递减操作),value必须是integer类型,否则会报对应的错误:

HINCRBY key field increment#filed对应的value必须是integer类型,increment必须是整数,可以为负

1c6be18a5ffbabd58b3acca51440db91.png

hincrbyfloat

与string类型中的incrbyfloat类似,hincrbyfloat可以对hash对象的指定的field的value做递增操作,increment可以是整数或浮点数(hash类型中没有hdecrbyfloat方法,当increment为负数时为递减操作),value必须是数字类型,否则会报对应的错误:

HINCRBYFLOAT key field increment#filed对应的value必须是数字类型,increment可以是整数或浮点,可以为负

f6597ea03083e5bf5cf41944baf64b79.png

长度

hlen

hlen返回hash类型中field的数量:

HLEN key

hstrlen

hstrlen返回hash类型中指定filed对应的value的字符长度:

HSTRLEN key field

32e7b7580e4b56cbd71b7648591d9a98.png

过期 

expire

我们可以看到hash类型没有hsetex hpsetex一类的方法,想对hash对象做过期策略可以使用全局函数expire,单位为秒:

expire key seconds

a9b149bcbaae6e972ffd2f8b5ef2ba28.png

Python客户端

下面介绍如何在python客户端实现和上面一样的操作,每个函数的含义不多赘述,在上面都有很详细的介绍了,可以看到在python客户端中的方法与redis命令行中的一样。

c280fce5e08350ca75fc072f4def02da.png

hset

和redis客户端中的hset不同的是python客户端中的hset只能设置一个field:

hset(self, name, key, value)

hmset

hmset(self, name, mapping)

hsetnx

hsetnx(self, name, key, value)

4299e0031a7597e889d5e514c4f1d23c.png

hdel

hdel(self, name, *keys)

b7ef3ff59847345d933ccf817284df26.png

hset

hset(self, name, key, value)

6523e40782a57685d4054b6d2963281a.png

hget

hget(self, name, key)

hmget

hmget(self, name, keys, *args)

hgetall

hgetall(self, name)

hkeys

hkeys(self, name)

hvals

hvals(self, name)

 dcb0e729e4c6232b20d85afbbf5f6fb6.png

计数

hincrby

hincrby(self, name, key, amount=1)

hincrbyfloat

hincrbyfloat(self, name, key, amount=1.0)

 b85952dec5290b349289e36dc011e5a5.png

长度

hlen

hlen(self, name)

hstrlen

hstrlen(self, name, key)

 ccf0a5fee7d41849f16d417434eab68b.png

过期

expire

expire(self, name, time)

#time单位为秒

 8e147ac0b70a586b2c03623802302474.png

希望本文对你有帮助,请点击 "","在看" 鼓励一下作者吧~ 谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值