key-map 值是Map集合
添加
HSET key field value
设置 key 指定的哈希集中指定字段的值。
如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。
如果字段在哈希集中存在,它将被重写。
127.0.0.1:6379> hset myhash field1 1 field2 2
(integer) 2
127.0.0.1:6379> hmget myhash field1 field2
1) "1"
2) "2"
127.0.0.1:6379> hset myhash field1 1
(integer) 0
hmset key field value [field value.....]
批量添加
如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联
redis> HMSET myhash field1 "Hello" field2 "World"
OK
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
redis>
HSETNX key field value
- 只在 key 指定的哈希集中不存在指定的字段时,设置字段的值。
- 如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。
- 如果字段已存在,该操作无效果。
127.0.0.1:6379> hsetnx mybash field5 5
(integer) 1
127.0.0.1:6379> hget mybash field5
"5"
127.0.0.1:6379> hsetnx mybash field5 10
(integer) 0
127.0.0.1:6379> hget mybash field5
"5"
删除
hdel key field [field..]
从 key 指定的哈希集中移除指定的域。在哈希集中不存在的域将被忽略。
如果 key 指定的哈希集不存在,它将被认为是一个空的哈希集,该命令将返回0。
在 2.4及以上版本中 :可接受多个域作为参数。小于 2.4版本 的 Redis 每次调用只能移除一个域
要在早期版本中以原子方式从哈希集中移除多个域,可用 MULTI/EXEC块。
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "1"
3) "field2"
4) "2"
127.0.0.1:6379> hdel myhash field1 field2
(integer) 2
127.0.0.1:6379> hgetall myhash
(empty array)
获取
hkeys key
返回 key 指定的哈希集中所有字段的名字。
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HKEYS myhash
1) "field1"
2) "field2"
hvals key
返回 key 指定的哈希集中所有字段的值。
127.0.0.1:6379> hset mybash f1 1 f2 2 f3 3
(integer) 3
127.0.0.1:6379> hvals mybash
1) "1"
2) "2"
3) "3"
HGET key field
返回 key 指定的哈希集中该字段所关联的值
127.0.0.1:6379> hget myhash field1
"1"
hmget key field [field....]
批量返回 key 指定的哈希集中指定字段的值。
127.0.0.1:6379> hmget myhash field1 field2
1) "1"
2) "2"
hgetall key
返回 key 指定的哈希集中所有的字段和值。
返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "1"
3) "field2"
4) "2"
HLEN key
返回 key 指定的哈希集包含的字段的数量。
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "1"
3) "field2"
4) "2"
127.0.0.1:6379> hlen myhash
(integer) 2
HSTRLEN key field
返回hash指定field的value的字符串长度,如果hash或者field不存在,返回0.
127.0.0.1:6379> hstrlen mybash field5
(integer) 1
127.0.0.1:6379> hstrlen mybash field00
(integer) 0
判断
HEXISTS key field
返回hash里面field是否存在
- 1 hash里面包含该field。
- 0 hash里面不包含该field或者key不存在。
127.0.0.1:6379> hexists myhash field1
(integer) 1
127.0.0.1:6379> hexists myhash field3
(integer) 0
自增 自减
HINCRBY key field increment
增加 key 指定的哈希集中指定字段的数值
- 如果 key 不存在,会创建一个新的哈希集并与 key 关联。
- 如果字段不存在,则字段的值在该操作执行前被设置为 0
HINCRBY 支持的值的范围限定在 64位 有符号整数
127.0.0.1:6379> hset mybash f3 3
(integer) 1
127.0.0.1:6379> hincrby mybash f3 5
(integer) 8
127.0.0.1:6379> hincrby mybash f3 5
(integer) 13
127.0.0.1:6379> hincrby mybash f3 -10
(integer) 3
127.0.0.1:6379>
HINCRBYFLOAT key field increment
为指定key的hash的field字段值执行float类型的increment加
如果field不存在,则在执行该操作前设置为0.
如果出现下列情况之一,则返回错误:
- field的值包含的类型错误(不是字符串)。
- 当前field或者increment不能解析为一个float类型。
127.0.0.1:6379> hset mybash f4 4.5
(integer) 1
127.0.0.1:6379> hincrbyfloat mybash f4 -10
"-5.5"
127.0.0.1:6379>