【Redis7】10大数据类型之Hash类型

1.Hash类型

Redis中的Hash类型是一种高效的数据结构,用于存储键值对的集合。这种类型特别适用于表示对象,因为它允许你将对象的多个属性(fields)作为单独的条目存储在同一个键(key)之下。

简单来说就是,Redis的数据是键值对形式(key value)的. 而Hash类型的值(value)也是键值对(fields value)形式的.
因此hash类型的值是key fields value [fields value]这种形式的. 类似于Java中的Map<String,Map<Object,Object>>

2.常用命令

  • HSET key field value:设置field对应的值。如果field已存在则更新,否则创建。
  • HGET key field:获取指定field的值。
  • HGETALL key:获取该key下所有field及其对应的值。
  • HLEN key:返回该key下field的数量。
  • HKEYS key:获取该key下所有field。
  • HVALS key:获取该key下所有field的值。
  • HEXISTS key field:检查field是否存在。
  • HDEL key field [field ...]:删除一个或多个field。
  • HINCRBY key field increment:将哈希表中field字段的值增加指定的整数值increment
  • HINCRBYFLOAT key field increment: 与HINCRBY类似,但是increment可以是浮点数,即支持对哈希表中field字段的值进行浮点数的原子性递增。
  • HSETNX key field value:只有当field不存在时才设置其值。

3.示例

以下是一些命令的使用示例:

hset和hget

HSET key field value:设置field对应的值。如果field已存在则更新,否则创建。

HGET key field:获取指定field的值。

127.0.0.1:6379> hset user1 name zhangsan age 18
(integer) 2
127.0.0.1:6379> hget user1 name
"zhangsan"
127.0.0.1:6379> hget user1 age
"18"
127.0.0.1:6379> 

hgetall

HGETALL key:获取该key下所有field及其对应的值。

127.0.0.1:6379> hgetall user1
1) "name"
2) "zhangsan"
3) "age"
4) "18"
127.0.0.1:6379> 

hlen

HLEN key:返回该key下field的数量。

127.0.0.1:6379> hlen user1
(integer) 2
127.0.0.1:6379> 

hkeys和hvals

HKEYS key:获取该key下所有field。

HVALS key:获取该key下所有field的值。

127.0.0.1:6379> hkeys user1
1) "name"
2) "age"
127.0.0.1:6379> hvals user1
1) "zhangsan"
2) "18"
127.0.0.1:6379> 

hexists

HEXISTS key field:检查field是否存在。存在返回1,不存在返回0

127.0.0.1:6379> hkeys user1
1) "name"
2) "age"
127.0.0.1:6379> hexists user1 name
(integer) 1
127.0.0.1:6379> hexists user1 email
(integer) 0

hdel

HDEL key field [field ...]:删除一个或多个field。

127.0.0.1:6379> hkeys user1
1) "name"
2) "age"
127.0.0.1:6379> hdel user1 name
(integer) 1
127.0.0.1:6379> hkeys user1
1) "age"
127.0.0.1:6379> 

hincrby和hincrbyfloat

HINCRBY key field increment:将哈希表中field字段的值增加指定的整数值increment

HINCRBYFLOAT key field increment: 与HINCRBY类似,但是increment可以是浮点数,即支持对哈希表中field字段的值进行浮点数的原子性递增。

127.0.0.1:6379> hgetall user1
1) "age"
2) "18"
3) "name"
4) "lisi"
5) "score"
6) "55.5"
127.0.0.1:6379> hincrby user1 age 1
(integer) 19
127.0.0.1:6379> hincrby user1 age -2 # 可以是负数
(integer) 17
127.0.0.1:6379> hincrbyfloat user1 score 0.5
"56"
127.0.0.1:6379> hincrbyfloat user1 score -1.5 # 可以是负数
"54.5"
127.0.0.1:6379> 

hsetnx

HSETNX key field value:只有当field不存在时才设置其值。

127.0.0.1:6379> hgetall user1
1) "age"
2) "17"
3) "name"
4) "lisi"
5) "score"
6) "54.5"
127.0.0.1:6379> hsetnx user1 age 22
(integer) 0
127.0.0.1:6379> hsetnx user1 phone 123123
(integer) 1
127.0.0.1:6379> 
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比奇堡的天没有云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值