1. 什么是 Redis Hash?
Redis Hash 是一种 键值对集合,类似于 Java 里的 HashMap
,可以用来存储对象的数据。例如,你可以将用户信息存储在 Redis 的 Hash 结构中,每个字段代表用户的一个属性。
示例:
HSET user:1001 name "Alice" age "25" city "New York"
此时 user:1001
是一个 Hash,包含 name
、age
和 city
三个字段。
2. Redis Hash 常用命令
1. HSET —— 设置哈希表的某个字段值
HSET user:1001 name "Alice"
作用:将 user:1001
这个哈希表的 name
字段设置为 "Alice"。
2. HGET —— 获取哈希表中某个字段的值
HGET user:1001 name
作用:获取 user:1001
这个哈希表中 name
字段的值,返回 "Alice"
。
3. HMSET —— 同时设置多个字段的值
HMSET user:1001 name "Alice" age "25" city "New York"
作用:同时设置 name
、age
、city
三个字段的值。
4. HMGET —— 获取多个字段的值
HMGET user:1001 name age city
作用:获取 name
、age
、city
三个字段的值。
5. HGETALL —— 获取哈希表中的所有字段和值
HGETALL user:1001
作用:返回 user:1001
的所有字段和值。
6. HEXISTS —— 判断字段是否存在
HEXISTS user:1001 age
作用:判断 user:1001
的 age
字段是否存在。
7. HDEL —— 删除一个或多个字段
HDEL user:1001 age
作用:删除 user:1001
的 age
字段。
8. HINCRBY —— 对字段的值进行整数增加
HINCRBY user:1001 age 5
作用:将 user:1001
的 age
字段增加 5
。
9. HINCRBYFLOAT —— 对字段的值进行浮点数增加
HINCRBYFLOAT user:1001 balance 100.5
作用:给 user:1001
的 balance
字段增加 100.5
。
10. HLEN —— 获取哈希表中的字段数量
HLEN user:1001
作用:获取 user:1001
哈希表中的字段数量。
11. HKEYS —— 获取哈希表中的所有字段
HKEYS user:1001
作用:返回 user:1001
的所有字段。
12. HVALS —— 获取哈希表中的所有值
HVALS user:1001
作用:返回 user:1001
的所有值。
13. HSETNX —— 只有字段不存在时才设置值
HSETNX user:1001 country "USA"
作用:如果 country
字段 不存在,则设置为 "USA"。
3. 典型应用场景
-
存储用户信息
HSET user:1002 name "Bob" age "28" city "Los Angeles"
适用于存储结构化的用户数据,如
id
、name
、age
等。 -
计数器
HINCRBY user:1002 login_count 1
适用于用户登录次数、点赞数等场景。
-
购物车
HSET cart:1001 product:2001 3 # 3件商品2001
适用于存储用户购物车的商品信息。
4. 总结
Redis Hash 结构适用于 存储对象数据,相比 String
类型,它可以 减少 key 数量,提高查询效率,但在字段过多的情况下也会增加内存占用。合理使用 Hash 类型可以提高数据管理的便利性和效率。