版权声明: 转载请注明出处!本文采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议
前言
散列表中的 HSET 可以代替 HMSET 多次使用,这个知识点在前面反复提到,在使用 HSET 命令设置的时候,会返回新添加的字段个数,旧的已经存在的字段会被覆盖,如果想字段不存在时才添加新字段就需要用到 HSETNX 命令,如果想获得散列表有多少个字段就要使用 HLEN 命令。
这篇笔记中的3个命令分别是 HSETNX 、 HSTRLEN 、 HLEN ,可以参考:
- 《Redis每日一练(04):SETEX、SETNX、PSETEX、MSET、MSETNX命令》 中的 SETNX 命令
- 《Redis每日一练(03):APPEND和STRLEN命令》 中的 STRLEN 命令
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>
总结
- HSETNX 命令可以在字段不存在的时候设置值,当指定的字段存在时当成什么都没发生过。
- HSTRLEN 命令可以返回指定字段对应数据的长度。
- HLEN 命令可以返回一个散列表类型的键对应的字段一共有多少个。
2019-12-7 14:10:54
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。