Redis 7 哈希(Hash)使用指南
Redis7 哈希是一种键值对集合数据结构,适合存储对象类型数据(如用户信息、商品属性)。每个哈希键可包含多个字段(field)和对应值(value),支持高效的单字段操作。以下是核心特性和使用示例:
一、核心命令
设置值
HSET key field value
:设置单个字段值HMSET key field1 value1 field2 value2...
:设置多个字段值(Redis 7+ 推荐直接使用HSET
替代)- 示例:
HSET user:1001 name "张三" age 28 email "zhangsan@example.com"
获取值
HGET key field
:获取单个字段值HMGET key field1 field2...
:获取多个字段值HGETALL key
:获取所有字段和值- 示例:
HGET user:1001 name # 返回 "张三"
删除字段
HDEL key field1 field2...
:删除一个或多个字段- 示例:
HDEL user:1001 email # 删除邮箱字段
其他操作
HEXISTS key field
:检查字段是否存在HKEYS key
:获取所有字段名HVALS key
:获取所有字段值HINCRBY key field increment
:字段值整数递增HLEN key
:获取字段数量
二、使用场景示例
场景:存储用户信息
# 设置用户数据
HSET user:2001 name "李四" age 32 role "admin"# 批量获取
HMGET user:2001 name age # 返回 ["李四", "32"]# 修改年龄并自增
HINCRBY user:2001 age 1 # 年龄变为33# 获取所有数据
HGETALL user:2001
# 返回:
# 1) "name"
# 2) "李四"
# 3) "age"
# 4) "33"
# 5) "role"
# 6) "admin"
三、Redis 7 优化特性
- 内存效率提升
采用更紧凑的存储格式(ziplist优化),在字段较少时减少内存占用。 - 命令扩展
HSET
支持多字段操作(替代旧版HMSET
),保持语法一致性:HSET product:5001 id 5001 price 99.9 stock 100
- 子命令支持
通过HSTRLEN
获取字段值的字符串长度:HSTRLEN user:2001 name # 返回 "李四" 的字节长度(6)
四、最佳实践
- 适用场景
- 对象属性存储(如用户配置、商品详情)
- 频繁部分更新的数据(无需读取整个对象)
- 规避场景
- 超大型哈希(字段数 > 1000):可能影响性能
- 需要复杂查询:哈希不支持二级索引
- 存储优化
- 字段名尽量简短(如用
em
代替email
) - 监控内存:
MEMORY USAGE key
查看占用
- 字段名尽量简短(如用