在 Redis 中,可以使用 HGETALL
命令获取 Hash(哈希表)中的所有字段和对应的值。
语法
HGETALL key
key
:要查询的哈希表名称。
返回值
返回一个包含所有字段和值的列表,格式为:
[field1, value1, field2, value2, …]
示例
假设有一个 Hash 存储用户信息:
HSET user:1000 name "Alice" age 30 email "alice@example.com"
使用 HGETALL
获取所有数据:
127.0.0.1:6379> HGETALL user:1000
1) "name"
2) "Alice"
3) "age"
4) "30"
5) "email"
6) "alice@example.com"
其他相关命令
命令 | 说明 |
---|---|
HKEYS key |
仅获取所有字段名(不返回值) |
HVALS key |
仅获取所有值(不返回字段名) |
HLEN key |
获取 Hash 中的字段数量 |
编程语言示例
Python (redis-py)
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
user_data = r.hgetall("user:1000") # 返回字典 {"name": "Alice", "age": "30", ...}
print(user_data)
Java (Jedis)
import redis.clients.jedis.Jedis;
public class Main {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost");
Map<String, String> userData = jedis.hgetAll("user:1000"); // {name=Alice, age=30, ...}
System.out.println(userData);
}
}
注意事项
- 大数据量时慎用:如果 Hash 包含大量数据,
HGETALL
可能阻塞 Redis,建议改用HSCAN
(渐进式遍历)。HSCAN user:1000 0 COUNT 10 #分批读取,避免一次性加载大Key
- 内存消耗:返回的数据会在客户端内存中完整存储,超大 Hash 可能导致客户端 OOM。
如果需要进一步优化或深入探讨 Redis Hash,可以继续交流! 🚀
内容由零声教学AI助手提供,问题来源于学员提问