HSET
HSET hash field value
可用版本: >= 2.0.0
时间复杂度: O(1)
将哈希表hash
中域field
的值设置为value
。
演示
如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行HSET操作。当HSET命令在哈希表中新创建 field
域并成功为它设置值时, 命令返回 1 。
如果域field
已经存在于哈希表中, 那么它的旧值将被新值value
覆盖,并且HSET命令返回 0 。
HSETNX
HSETNX hash field value
可用版本: >= 2.0.0
时间复杂度: O(1)
当且仅当域field
尚未存在于哈希表hash
的情况下,才将它的值设置为value
。
演示
如果给定域已经存在于哈希表当中, 那么命令将放弃执行设置操作,并且返回 0。
如果哈希表hash
不存在, 那么一个新的哈希表将被创建并执行HSETNX命令,或者哈希表hash
存在,而域field
在哈希表hash
中不存在,HSETNX命令会执行成功,并且返回 1。
HGET
HGET hash field
可用版本: >= 2.0.0
时间复杂度: O(1)
返回哈希表中给定域的值。
演示
HGET命令在默认情况下返回给定域的值。
如果给定域不存在于哈希表中, 又或者给定的哈希表并不存在, 那么命令会返回 (nil)
。
HEXISTS
HEXISTS hash field
可用版本: >= 2.0.0
时间复杂度: O(1)
检查给定域field
是否存在于哈希表hash
当中。
演示
HEXISTS命令在给定域存在时返回 1。
HEXISTS命令在给定域不存在时返回 0。
HMSET
HMSET key field value [field value …]
可用版本:>= 2.0.0
时间复杂度:O(N), N 为 field-value 对的数量。
同时将多个域-值(field-value
)对设置到哈希表key
中。
演示
如果哈希表key
不存在,一个空哈希表被创建并执行HMSET命令。
HMSET命令会覆盖哈希表中已存在的域。
当key
不是哈希表(hash
)类型时,返回一个错误。
HMGET
HMGET key field [field …]
可用版本:>= 2.0.0
时间复杂度:O(N), N 为给定域的数量。
返回哈希表key
中,一个或多个给定域的值。
演示
如果给定的域不存在于哈希表中,那么返回一个(nil
)值,并且HMGET命令返回的值的排列顺序和给定域参数的请求顺序一样。
对不存在的哈希表key
进行HMGET操作将返回一个只带有 (nil)
值的表。
HKEYS
HKEYS key
可用版本:>= 2.0.0
时间复杂度:O(N), N 为哈希表的大小。
返回哈希表key
中的所有域。
演示
当哈希表key
不存在时,返回一个空表。
HKEYS命令返回一个包含哈希表中所有域的表。
HVALS
HVALS key
可用版本:>= 2.0.0
时间复杂度:O(N), N 为哈希表的大小。
返回哈希表key
中所有域的值。
演示
当哈希表key
不存在时,返回一个空表。
HVALS命令返回一个包含哈希表中所有值的表。
HGETALL
HGETALL key
可用版本:>= 2.0.0
时间复杂度:O(N), N 为哈希表的大小。
返回哈希表key
中,所有的域和值。
演示
在返回值里,紧跟每个域(field
)之后是域的值(value
)。
若哈希表key
不存在,返回空列表。
HDEL
HDEL key field [field …]
可用版本:>= 2.0.0
时间复杂度: O(N), N 为要删除的域的数量。
删除哈希表key
中的一个或多个指定域,不存在的域将被忽略。
演示
HDEL命令会返回被成功移除的域的数量,不包括被忽略的域(如下图的key3
域)。
Redis中哈希表的HSET、HSETNX、HGET、HEXISTS、HMSET、HMGET、HKEYS、HVALS、HGETALL、HDEL命令就介绍到这里。
写博客是博主记录自己的学习过程,如果有错误,请指正,谢谢!