Redis 哈希(Hash)相关命令
基础操作命令
Section titled “基础操作命令”1. HSET
Section titled “1. HSET”设置哈希表中一个或多个字段的值
- 语法:
HSET key field value [field value ...]
HSET user:1000 name "Alice" age 30 # 设置 user:1000 的 name 和 age 字段2. HGET
Section titled “2. HGET”获取哈希表中指定字段的值
- 语法:
HGET key field
HGET user:1000 name # 返回 "Alice"3. HGETALL
Section titled “3. HGETALL”获取哈希表中所有字段和值
- 语法:
HGETALL key
HGETALL user:1000 # 返回 name "Alice" age "30"4. HDEL
Section titled “4. HDEL”删除哈希表中一个或多个字段
- 语法:
HDEL key field [field ...]
HDEL user:1000 age # 删除 age 字段5. HEXISTS
Section titled “5. HEXISTS”检查哈希表中是否存在某个字段
- 语法:
HEXISTS key field
HEXISTS user:1000 name # 返回 1(存在)批量操作命令
Section titled “批量操作命令”1. HMSET(已废弃)
Section titled “1. HMSET(已废弃)”替代方案:直接使用 HSET(Redis 4.0+)。
2. HMGET
Section titled “2. HMGET”获取哈希表中多个字段的值
- 语法:
HMGET key field [field ...]
HMGET user:1000 name age # 返回 ["Alice", "30"]数值操作命令
Section titled “数值操作命令”**1. **HINCRBY
Section titled “**1. **HINCRBY”对哈希表中数值字段进行整数增减
- 语法:
HINCRBY key field increment
HINCRBY user:1000 age 1 # 将 age 增加到 31**2. **HINCRBYFLOAT
Section titled “**2. **HINCRBYFLOAT”对哈希表中数值字段进行浮点数增减
- 语法:
HINCRBYFLOAT key field increment
HINCRBYFLOAT product:100 price 0.5 # 价格增加 0.5元数据查询命令
Section titled “元数据查询命令”**1. **HLEN
Section titled “**1. **HLEN”获取哈希表中字段数量
- 语法:
HLEN key
HLEN user:1000 # 返回 2(name 和 age)**2. **HKEYS
Section titled “**2. **HKEYS”获取哈希表中所有字段名
- 语法:
HKEYS key
HKEYS user:1000 # 返回 ["name", "age"]**3. **HVALS
Section titled “**3. **HVALS”获取哈希表中所有字段值
- 语法:
HVALS key
HVALS user:1000 # 返回 ["Alice", "30"]**4. **HSTRLEN
Section titled “**4. **HSTRLEN”获取哈希表中字段值的字符串长度
- 语法:
HSTRLEN key field
HSTRLEN user:1000 name # 返回 5("Alice" 的长度)高级操作命令
Section titled “高级操作命令”**1. **HSCAN
Section titled “**1. **HSCAN”增量迭代哈希表中的字段(避免阻塞)
- 语法:
HSCAN key cursor [MATCH pattern] [COUNT count]
HSCAN user:1000 0 MATCH "n*" # 查找以 "n" 开头的字段- 内存优化
小哈希(字段少且值小)使用
ziplist编码,内存高效。大哈希自动转为
hashtable编码,但内存占用增加。
- 性能警告
HGETALL、HKEYS、HVALS在哈希较大时会返回大量数据,可能阻塞服务。
- 原子性
所有哈希命令是原子操作,适合高并发场景。