暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Redis每日一练(18):HSETNX、HSTRLEN和HLEN命令

原创 AlbertS 2019-12-18
1850

版权声明: 转载请注明出处!本文采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议

前言

散列表中的 HSET 可以代替 HMSET 多次使用,这个知识点在前面反复提到,在使用 HSET 命令设置的时候,会返回新添加的字段个数,旧的已经存在的字段会被覆盖,如果想字段不存在时才添加新字段就需要用到 HSETNX 命令,如果想获得散列表有多少个字段就要使用 HLEN 命令。

这篇笔记中的3个命令分别是 HSETNX 、 HSTRLEN 、 HLEN ,可以参考:

HSETNX

  • 最早出现版本:2.0.0
  • 时间复杂度:O(N)
  • 命令参数:HSETNX key field value
  • 操作类型:hashes
  • 官方文档

作用

这个命令与 SETNX 命令的作用基本一致,唯一的不同就是这个命令作用在散列表的字段上,当设置的字段不存在时会添加新的字段,当设置的字段存在时,就当什么事情也没有发生过。

练习

连续设置散列表的同一个字段值,查看返回结果和最终的数值:

127.0.0.1:6379> GET users:101
(nil)
127.0.0.1:6379> HSETNX users:101 name ablert
(integer) 1
127.0.0.1:6379> HGET users:101 name
"ablert"
127.0.0.1:6379> HSETNX users:101 name tom
(integer) 0
127.0.0.1:6379> HGET users:101 name
"ablert"
127.0.0.1:6379>

通过上面这个例子可以看出,当 HSETNX 设置一个不存在的字段时返回1,设置一个存在的字段时返回0。

HSTRLEN

  • 最早出现版本:3.2.0
  • 时间复杂度:O(1)
  • 命令参数:HSTRLEN key field
  • 操作类型:hashes
  • 官方文档

作用

想要获取一个字符串类型的键对应数据的长度需要使用 STRLEN ,而要获取散列表一个字段对应数据的长度就可以使用 HSTRLEN 命令,返回的数字就是值的长度,如果指定的字段不存在则返回0。

练习

使用 HMSET 设置字段后,再使用 HSTRLEN 命令获取字段长度,然后尝试获取不存在字段的长度:

127.0.0.1:6379> HMSET users:101 name albert age 18
OK
127.0.0.1:6379> HSTRLEN users:101 name
(integer) 6
127.0.0.1:6379> HSTRLEN users:101 age
(integer) 2
127.0.0.1:6379> HSTRLEN users:101 weight
(integer) 0
127.0.0.1:6379> HSTRLEN xxxx xx
(integer) 0
127.0.0.1:6379>

若指定的键或这字段不存在都会返回0,并不会有任何报错。

HLEN

  • 最早出现版本:2.0.0
  • 时间复杂度:O(1)
  • 命令参数:HLEN key
  • 操作类型:hashes
  • 官方文档

作用

这个命令就是返回散列表中有多少个字段的,查询字段具体的值需要使用 HVALS 或者 HGETALL ,但是如果只是想知道字段的数量就可以使用 HLEN 命令。

练习

使用 HSET 命令设置多个字段值,然后再用 HLEN 获取散列表字段数量,添加新的字段然后再查询数量:

127.0.0.1:6379> HMSET users:101 name albert age 18
OK
127.0.0.1:6379> HLEN users:101
(integer) 2
127.0.0.1:6379> HSET users:101 weight 61
(integer) 1
127.0.0.1:6379> HLEN users:101
(integer) 3
127.0.0.1:6379> HDEL users:101 naem
(integer) 0
127.0.0.1:6379> HDEL users:101 name
(integer) 1
127.0.0.1:6379> HLEN users:101
(integer) 2
127.0.0.1:6379>

总结

  1. HSETNX 命令可以在字段不存在的时候设置值,当指定的字段存在时当成什么都没发生过。
  2. HSTRLEN 命令可以返回指定字段对应数据的长度。
  3. HLEN 命令可以返回一个散列表类型的键对应的字段一共有多少个。

2019-12-7 14:10:54

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论