哈希Hash
哈希类型指键值本身又是一个键值对结构,如value={{field1,value1},…{fieldN,valueN}}。哈希的映射关系叫field-value,注意,这里的value是指field对应的值,不是键对应的值。
常用命令
设置值:hset key filed value,也可以使用hsetnx用于添加,和set与setnx的关系一样,但作用域为field。
获取值:hget key filed,如果键或field不存在,返回nil
删除值:hdel key filed [field…],返回结果为成功删除field的个数
计算field个数:hlen key
批量设置或获取field-value:
hmget key field [field …]
hmset key field value [field value …]
判断field是否存在:hexists key field
获取所有field:hkeys key
获取所有value:hvals key
获取所有field-value:hgetall key
注意,当hash元素较多时,hgetall可能会造成Redis阻塞,建议要获取多个,可以使用hmget,如果一定要获取全部filed-value,可以使用hscan命令,采用渐进式遍历哈希类型
自增指定数字/浮点数字
hincrby key field
hincrbyfload key field
计算value字符串长度
hstrlen key field
哈希类型命令的时间复杂度,开发人员可以参考此表选择适合的命令
|
命令 |
时间复杂度 |
|
hset key field value |
O(1) |
|
hget key field |
O(1) |
|
hdel key field [field …] |
O(k),k 是 field 个数 |
|
hlen key |
O(1) |
|
hgetall key |
O(n) , n 是 field 总数 |
|
hmget field [field …] |
O(k),k 是 field 个数 |
|
hmset field value [field value…] |
O(k),k 是 field 个数 |
|
hexists key field |
O(1) |
|
hkeys key |
O(n) , n 是 field 总数 |
|
hvals key |
O(n) , n 是 field 总数 |
|
hsetnx key field value |
O(1) |
|
hincrby key field increment |
O(1) |
|
hincrbyfloat key field increment |
O(1) |
|
hstrlen key field |
O(1) |