Redis 06 Hash


哈希就是 key - map 的数据结构

应用场景:对象存储

赋值

单个哈希赋值

hset

127.0.0.1:6379> hset hash f1 sail
(integer) 1

多个哈希赋值

hmset

127.0.0.1:6379> hmset hash f2 sail2 f3 sail3
OK

不存在才赋值

hsetnx

127.0.0.1:6379> hkeys hash
1) "f1"
2) "f2"
3) "f3"
127.0.0.1:6379> hsetnx hash f4 1 # f4 不存在,赋值成功
(integer) 1
127.0.0.1:6379> hget hash f4
"1"
127.0.0.1:6379> hsetnx hash f4 2 # f4 存在,赋值失败
(integer) 0
127.0.0.1:6379> hget hash f4
"1"

自增

hincrby

127.0.0.1:6379> hset hash f3 1
(integer) 1
127.0.0.1:6379> hincrby hash f3 1 # 自增 1
(integer) 2
127.0.0.1:6379> hincrby hash f3 -1 # 自减 1(哈希没有自减命令,用自增负数实现自减)
(integer) 1

查询

查询单个哈希

hget

127.0.0.1:6379> hget hash f1
"sail"

查询多个哈希

hmget

127.0.0.1:6379> hmget hash f2 f3
1) "sail2"
2) "sail3"

查询哈希所有值

hgetall

127.0.0.1:6379> hgetall hash
1) "f1"
2) "sail"
3) "f2"
4) "sail2"
5) "f3"
6) "sail3"

查询哈希所有 key

hkeys

127.0.0.1:6379> hkeys hash
1) "f1"
2) "f2"

查询哈希所有 value

hvals

127.0.0.1:6379> hvals hash
1) "sail"
2) "sail2"

查询哈希长度

hlen

127.0.0.1:6379> hgetall hash
1) "f1"
2) "sail"
3) "f2"
4) "sail2"
127.0.0.1:6379> hlen hash
(integer) 2

查询哈希字段是否存在

hexists

127.0.0.1:6379> hgetall hash
1) "f1"
2) "sail"
3) "f2"
4) "sail2"
127.0.0.1:6379> hexists hash f1 # 存在返回 1
(integer) 1
127.0.0.1:6379> hexists hash f3 # 不存在返回 0
(integer) 0

删除

删除哈希指定字段

hdel

127.0.0.1:6379> hdel hash f3
(integer) 1
127.0.0.1:6379> hgetall hash
1) "f1"
2) "sail"
3) "f2"
4) "sail2"