目录
HSET 添加
HSETNX 添加
HMSET 批量添加
HGET 获取元素
HGETALL 获取所有
HMGET 批量查询
HEXISTS 判断是否存在
HINCRBY 增加整数
HINCRBYFLOAT 添加浮点数
HLEN 查Field数量
HKEYS 查所有Field
HVALS 查所有Field值
HSCAN 迭代
HDEL 删除Field
HSET key field value:将哈希表 key 中的域 field 的值设为 value。
127.0.0.1:6379> flushdb
OK
# field不存在,hset成功返回 1
127.0.0.1:6379> hset person name 'cxian'
(integer) 1
127.0.0.1:6379> hset person age '22'
(integer) 1
# field已存在并覆盖值,hset成功返回 0
127.0.0.1:6379> hset person age '25'
(integer) 0
127.0.0.1:6379> set name 100
OK
# 对已存在的key执行hset报错
127.0.0.1:6379> hset name high 1.75
(error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复试度为O(1)。
返回值:
HSETNX key field value:将哈希表 key 中的域 field 的值设置为 value。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> hsetnx person age 10
(integer) 1
# age已存在
127.0.0.1:6379> hsetnx person age 12
(integer) 0
时间复杂度O(1)。
设置成功返回1,field已存在则操作不成功返回0。
HMSET key field value [field value ...]:同时将多个 field-value (域-值)对设置到哈希表 key 中。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> hmset person age 12 name cxian
OK
127.0.0.1:6379> hmget person age name
1) "12"
2) "cxian"
时间复杂度O(N),N为field-value的数量。
执行成功返回OK,当key不是hash表类型时报错。
HGET key field:返回哈希表 key 中给定域 field 的值。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> hset person age 88
(integer) 1
127.0.0.1:6379> hget person age
"88"
# key不存在或field不存在
127.0.0.1:6379> hget person1 age
(nil)
127.0.0.1:6379> hget person age1
(nil)
时间复杂度O(1)。
返回给定域的值。
HGETALL key:返回哈希表 key 中,所有的域和值。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> hset person age 88
(integer) 1
127.0.0.1:6379> hget person age
"88"
127.0.0.1:6379> hset person name cxian
(integer) 1
127.0.0.1:6379> hgetall person
1) "age" # field
2) "88" # value
3) "name"
4) "cxian"
# key不存在
127.0.0.1:6379> hgetall person1
(empty array)
时间复杂度O(N),N为哈希表的大小。
以列表形式返回哈希表的域和域的值。
HMGET key field [field ...]:返回哈希表 key 中,一个或多个给定域的值。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> hset person age 88
(integer) 1
127.0.0.1:6379> hget person age
"88"
127.0.0.1:6379> hmget person age name address
1) "88"
2) "cxian"
3) (nil)
# key不存在
127.0.0.1:6379> hmget person1 age name
1) (nil)
2) (nil)
时间复杂度O(N),N为field的数量。
返回一个包含多个给定域的关联值的表。
HEXISTS key field:查看哈希表 key 中,给定域 field 是否存在。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> hset person age 88
127.0.0.1:6379> hexists person age
(integer) 1
# 不存在field或不存在的key
127.0.0.1:6379> hexists person age1
(integer) 0
127.0.0.1:6379> hexists person1 age
(integer) 0
时间复杂度为O(1)。如果key和field都存在返回1,否则返回0。
HINCRBY key field increment:为哈希表 key 中的域 field 的值加上增量 increment。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty array)
# key和field不存在
127.0.0.1:6379> hincrby person age 22
(integer) 22
127.0.0.1:6379> hget person age
"22"
# increment为负数
127.0.0.1:6379> hincrby person age -10
(integer) 12
127.0.0.1:6379> hget person age
"12"
127.0.0.1:6379>
127.0.0.1:6379> hset person name cxian
(integer) 1
# field对应值不为数字
127.0.0.1:6379> hincrby person name 12
(error) ERR hash value is not an integer
时间复杂度O(1)。
返回执行hincrby之后field对应的值。
HINCRBYFLOAT key field increment
127.0.0.1:6379> hincrbyfloat person age 23.8
"35.8"
127.0.0.1:6379> hincrbyfloat person age -8.9
"26.9"
HLEN key:返回哈希表 key 中域的数量。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> hmset person age 23 name cxian
OK
127.0.0.1:6379> hlen person
(integer) 2
时间复杂度O(1)。
返回哈希表中field的数量。
HKEYS key:返回哈希表 key 中的所有field。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> hmset person age 23 name cxian
OK
127.0.0.1:6379> hlen person
(integer) 2
127.0.0.1:6379> hkeys person
1) "age"
2) "name"
# key不存在
127.0.0.1:6379> hkeys person1
(empty array)
时间复杂度为O(N),N为field的数量。
一个包含哈希表中所有域的表。
HVALS key:返回哈希表 key 中所有域的值。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> hmset person age 23 name cxian
OK
127.0.0.1:6379> hvals person
1) "23"
2) "cxian"
# key不存在
127.0.0.1:6379> hvals person1
(empty array)
127.0.0.1:6379>
时间复杂度为O(N),N为field数量。
返回一个包含哈希表中所有值的表。
HSCAN key cursor [MATCH pattern] [COUNT count]:迭代哈希键中的键值对。
HDEL key field [field ...]:删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
127.0.0.1:6379> hgetall person
1) "age"
2) "23"
3) "name"
4) "cxian"
127.0.0.1:6379> hdel person age
(integer) 1
# field不存在 或 key不存在
127.0.0.1:6379> hdel person age1
(integer) 0
127.0.0.1:6379> hgetall person
1) "name"
2) "cxian"
时间复杂度O(N),N为field的数量。
返回被移除的field的数量。