参考http://redisdoc.com/
Redis哈希(Hash):KV模式不变,但V是一个键值对
1、hset hash field value (重点)
- 将哈希表 hash 中域 field 的值设置为 value 。
- 如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。
- 如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。
127.0.0.1:6379> hset user id 5 //设置哈希表user中键id的值为5
1
127.0.0.1:6379> hget user id //获取哈希表user中键id的值为5
5
127.0.0.1:6379> hset user id 11 //如果哈希表user中键id的值存在。旧值将被新值 value 覆盖
0
127.0.0.1:6379> hget user id 获取哈希表user中键id的新值为11
11
127.0.0.1:6379>
2、hget hash field (重点)
- 返回哈希表中给定域的值。
- HGET 命令在默认情况下返回给定域的值。
- 如果给定域不存在于哈希表中, 又或者给定的哈希表并不存在, 那么命令返回 nil 。
127.0.0.1:6379> hset user id 5 //设置哈希表user中键id的值为5
1
127.0.0.1:6379> hget user id //获取哈希表user中键id的值为5
5
3、hmet key field value [field value …](重点)
- 同时将多个 field-value (域-值)对设置到哈希表 key 中。
- 此命令会覆盖哈希表中已存在的域。
- 如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。
127.0.0.1:6379> hmset person id 1 name xiaozhi age 18 //设置哈希表person中的多个key-value
OK
127.0.0.1:6379> hmget person id name age //获取哈希表person中的多个key的value
1
xiaozhi
18
127.0.0.1:6379>
4、hmget key field [field …](重点)
- 返回哈希表 key 中,一个或多个给定域的值。
- 如果给定的域不存在于哈希表,那么返回一个 nil 值。
- 因为不存在的 key 被当作一个空哈希表来处理,所以对一个不存在的 key 进行 HMGET 操作将返回一个只带有 nil 值的表。
127.0.0.1:6379> hmset person id 1 name xiaozhi age 18 //设置哈希表person中的多个key-value
OK
127.0.0.1:6379> hmget person id name age //获取哈希表person中的多个key的value
1
xiaozhi
18
127.0.0.1:6379>
5、hgetall key(重点)
- 返回哈希表 key 中,所有的域和值。
- 在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
127.0.0.1:6379> hmset person id 1 name xiaozhi age 18
OK
127.0.0.1:6379> hgetall person //返回哈希表person中,所有的键和值。
id
1
name
xiaozhi
age
18
127.0.0.1:6379>
6、hdel key field [field …](重点)
- 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
127.0.0.1:6379> hmset person id 1 name xiaozhi age 18
OK
127.0.0.1:6379> hdel person name //删除哈希表person中的键name
1
127.0.0.1:6379> hgetall person
id
1
age
18
127.0.0.1:6379> hdel person id age //删除哈希表person中的键id和age
2
127.0.0.1:6379> hgetall person
127.0.0.1:6379>
7、hlen key
- 返回哈希表 key 中域的数量。
127.0.0.1:6379> hmset customer id 5 name lisi age 18 address beijing
OK
127.0.0.1:6379> hgetall customer
id
5
name
lisi
age
18
address
beijing
127.0.0.1:6379> hlen customer //返回哈希表customer中键的数量
4
127.0.0.1:6379>
8、hexists hash field
- 检查给定域 field 是否存在于哈希表 hash 当中。
- HEXISTS 命令在给定域存在时返回 1 , 在给定域不存在时返回 0 。
127.0.0.1:6379> hmset customer id 5 name lisi age 18 address beijing
OK
127.0.0.1:6379> hexists customer id //检查给定域id是否存在于哈希表customer当中,存在返回1,否则返回0
1
127.0.0.1:6379> hexists customer name //检查给定域name是否存在于哈希表customer当中,存在返回1,否则返回0
1
127.0.0.1:6379> hexists customer unit //检查给定域unit是否存在于哈希表customer当中,存在返回1,否则返回0
0
127.0.0.1:6379>
9、hkeys key(重点)
- 返回哈希表 key 中的所有域。
127.0.0.1:6379> hmset customer id 5 name lisi age 18 address beijing
OK
127.0.0.1:6379> hkeys customer //获取哈希表customer 中所有的key
id
name
age
address
127.0.0.1:6379>
10、hvals key(重点)
- 返回哈希表 key 中所有域的值。
127.0.0.1:6379> hmset customer id 5 name lisi age 18 address beijing
OK
127.0.0.1:6379> hvals customer
5
lisi
18
beijing
127.0.0.1:6379>
11、hincrby key field increment
- 为哈希表 key 中的域 field 的值加上增量 increment 。
- 增量也可以为负数,相当于对给定域进行减法操作。
- 如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
- 如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。
127.0.0.1:6379> hset customer age 20
1
127.0.0.1:6379> hincrby customer age 2 //为哈希表customer中的域 age的值加上增量 2。
22
127.0.0.1:6379> hincrby customer age 2
24
127.0.0.1:6379>
12、hincrbyfloat key field increment
- 为哈希表 key 中的域 field 加上浮点数增量 increment 。
127.0.0.1:6379> hset student score 95.1
1
127.0.0.1:6379> hincrbyfloat student score 0.5 //为哈希表student中的域score加上浮点数增量0.5
95.6
127.0.0.1:6379> hincrbyfloat student score 0.5
96.1
127.0.0.1:6379>
13、hsetnx hash field value
- 当且仅当域 field 尚未存在于哈希表的情况下, 将它的值设置为 value
- hsetnx命令在设置成功时返回 1 , 在给定域已经存在而放弃执行设置操作时返回 0
127.0.0.1:6379> HGETALL customer
age
24
score
96.1
127.0.0.1:6379> hsetnx customer age 18 //已经存在age的值,所以设置值失败返回0
0
127.0.0.1:6379> hsetnx customer email 172@qq.com //不存在email的值,所以设置值成功返回1
1
127.0.0.1:6379> hgetall customer
age
24
score
96.1
email
172@qq.com
127.0.0.1:6379>