
设置字段值:HSET key field value,将键对应的字段设置为指定值。 获取字段值:HGET key field,获取键对应的字段值。 批量设置字段值:HMSET key field1 value1 field2 value2 ...,批量设置多个字段值。 批量获取字段值:HMGET key field1 field2 ...,批量获取多个字段值。 删除字段:HDEL key field1 field2 ...,删除指定字段。 检查字段是否存在:HEXISTS key field,检查字段是否存在。 获取所有字段和值:HGETALL key,获取键对应的所有字段和值。 获取所有字段:HKEYS key,获取键对应的所有字段。 获取所有值:HVALS key,获取键对应的所有值。 获取字段数量:HLEN key,获取键对应的字段数量。
过期时间:可以为 Hash 设置过期时间,使其在指定时间后自动删除。 事务支持:通过 MULTI 和 EXEC 命令,可以将多个操作打包成一个事务执行。 持久化:Redis 支持将 Hash 数据持久化到磁盘,确保数据不会因服务器重启而丢失。



HSET user:1000 name "John Doe" email "john@example.com" age 30
HSET cart:1234 product:101 2 product:102 1
HSET product:101 name "Laptop" price 999.99EXPIRE product:101 3600
HSET config:app theme "dark" language "en"
# 设置会话信息HSET session:12345 username "JohnDoe" login_time "2023-10-01 10:00:00" cart "[]"# 设置会话过期时间(30分钟)EXPIRE session:12345 1800# 获取会话中的用户名HGET session:12345 username# 获取会话的所有字段和值HGETALL session:12345

1. 内存预分配
Redis 在处理 Hash 数据时,会根据历史操作的模式,预分配一定的内存空间,以减少频繁的内存分配和释放。
2. 批量操作
为了减少网络往返和命令解析的开销,Redis 提供了批量操作的支持。例如,HMSET
和 HMGET
命令可以一次性处理多个字段。
3. 内存压缩
对于存储大量小字段的场景,Redis 提供了内存压缩功能。通过配置 hash-max-ziplist-entries
和 hash-max-ziplist-value
参数,可以优化内存使用。
4. 合理设计字段
合理设计字段名和值,避免存储过大的数据。例如,可以将复杂的对象拆分为多个字段存储。

# 添加新商品HSET product:101 id 101 name "Smartphone" price 299.99 stock 100 description "Latest model with great features."# 更新库存HINCRBY product:101 stock -1# 查询商品信息HGETALL product:101
import redis# 连接 Redisr = redis.Redis(host='localhost', port=6379, db=0)# 设置字段值r.hset('user:1000', 'name', 'John Doe')r.hset('user:1000', 'email', 'john@example.com')r.hset('user:1000', 'age', 30)# 获取字段值print(r.hget('user:1000', 'name')) # 输出: b'John Doe'# 批量设置字段值r.hmset('user:1000', {'name': 'John Doe', 'email': 'john@example.com', 'age': 30})# 批量获取字段值print(r.hmget('user:1000', ['name', 'email', 'age'])) # 输出: [b'John Doe', b'john@example.com', b'30']# 获取所有字段和值print(r.hgetall('user:1000')) # 输出: {b'name': b'John Doe', b'email': b'john@example.com', b'age': b'30'}# 删除字段r.hdel('user:1000', 'email')# 检查字段是否存在print(r.hexists('user:1000', 'email')) # 输出: 0# 获取字段数量print(r.hlen('user:1000')) # 输出: 2

文章转载自老王两点中,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




