目录
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的数量。