目录
- 1.概述
- 2.常见操作
- 2.1 H(M)SET/H(M)GET
- 2.2 HGETALL
- 2.3 HDEL
- 2.4 HLEN
- 2.5 HEXISTS
- 2.6 HKEYS/HVALS
- 2.7 HINCRBY
- 2.8 HSETNX
- 3.总结
1.概述
- Hash是一个String类型的field(字段)和value(值)的映射表,而且value是一个键值对集合,类似
Map<String, Map<Object, Object>>
,Hash特别适合用于存储对象。 - 每个Hash可以存储2³²-1个键值对 (40多亿)。
2.常见操作
2.1 H(M)SET/H(M)GET
HSET/HGET,设置和获取hash的键值对
语法:
hset key field value [field value ......]
例:
127.0.0.1:6379> hset user:01 name liming
(integer) 1
hset user:01 id 1 name liming age 30
语法:
hget key field [field ......]
例:
127.0.0.1:6379> hget user:01 name
"liming"
127.0.0.1:6379> hget user:01 age
"30"
127.0.0.1:6379> hget user:01 id
"1"
HMSET,一次批量设置hash的多个值
127.0.0.1:6379> HMSET user:02 id 02 name lisi
OK
从 Redis 4.0.0 开始,HSET 也支持批量设置,HMSET 被视为已弃用,但仍可使用。
HMGET,一次获取某个hash的多个值
127.0.0.1:6379> hmget user:02 id name
1) "02"
2) "lisi"
2.2 HGETALL
获取一个hash中的所有键值
127.0.0.1:6379> hgetall user:01
1) "name"
2) "liming"
3) "id"
4) "1"
5) "age"
6) "30"
2.3 HDEL
删除hash中的某个键值对
127.0.0.1:6379> hdel user:01 age
(integer) 1
127.0.0.1:6379> hgetall user:01
1) "name"
2) "liming"
3) "id"
4) "1"
2.4 HLEN
hash中键值对数量
127.0.0.1:6379> hlen user:01
(integer) 2
2.5 HEXISTS
hash中某个键是否存在
127.0.0.1:6379> HEXISTS user:01 age
(integer) 0
127.0.0.1:6379> HEXISTS user:01 name
(integer) 1
2.6 HKEYS/HVALS
获取一个hash中所有的键/值
127.0.0.1:6379> HKEYS user:01
1) "name"
2) "id"
127.0.0.1:6379> HVALS user:01
1) "liming"
2) "1"
2.7 HINCRBY
对hash中某个键的值进行自增
127.0.0.1:6379> hmset user:03 age 13
OK
127.0.0.1:6379> hincrby user:03 age 1
(integer) 14
127.0.0.1:6379> hincrby user:03 age 2
(integer) 16
2.8 HSETNX
不存在就赋值,如已存在则无效
127.0.0.1:6379> hgetall user:03
1) "age"
2) "16"
127.0.0.1:6379> HSETNX user:03 name liming
(integer) 1
127.0.0.1:6379> HSETNX user:03 age 3
(integer) 0
3.总结
KV键值对的结构,适合早期的购物车等场景