当前位置: 首页 > news >正文

Redis 7 哈希(Hash)使用指南

Redis7 哈希是一种键值对集合数据结构,适合存储对象类型数据(如用户信息、商品属性)。每个哈希键可包含多个字段(field)和对应值(value),支持高效的单字段操作。以下是核心特性和使用示例:


一、核心命令
  1. 设置值

    • HSET key field value:设置单个字段值
    • HMSET key field1 value1 field2 value2...:设置多个字段值(Redis 7+ 推荐直接使用 HSET 替代)
    • 示例:
      HSET user:1001 name "张三" age 28 email "zhangsan@example.com"
      

  2. 获取值

    • HGET key field:获取单个字段值
    • HMGET key field1 field2...:获取多个字段值
    • HGETALL key:获取所有字段和值
    • 示例:
      HGET user:1001 name  # 返回 "张三"
      

  3. 删除字段

    • HDEL key field1 field2...:删除一个或多个字段
    • 示例:
      HDEL user:1001 email  # 删除邮箱字段
      

  4. 其他操作

    • 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 优化特性
  1. 内存效率提升
    采用更紧凑的存储格式(ziplist优化),在字段较少时减少内存占用。
  2. 命令扩展
    HSET 支持多字段操作(替代旧版 HMSET),保持语法一致性:
    HSET product:5001 id 5001 price 99.9 stock 100
    

  3. 子命令支持
    通过 HSTRLEN 获取字段值的字符串长度:
    HSTRLEN user:2001 name  # 返回 "李四" 的字节长度(6)
    


四、最佳实践
  1. 适用场景
    • 对象属性存储(如用户配置、商品详情)
    • 频繁部分更新的数据(无需读取整个对象)
  2. 规避场景
    • 超大型哈希(字段数 > 1000):可能影响性能
    • 需要复杂查询:哈希不支持二级索引
  3. 存储优化
    • 字段名尽量简短(如用 em 代替 email
    • 监控内存:MEMORY USAGE key 查看占用
http://www.dtcms.com/a/311632.html

相关文章:

  • 细分推广场景,让推客推广更贴合用户当下需求
  • 存储过程的介绍、基本语法、delimiter的使用
  • 未来交通:元宇宙技术重塑出行体验
  • 用Unity结合VCC更改人物模型出现的BUG
  • WebSocket断线重连机制:保障实时通信的高可用性
  • 疯狂星期四文案网第27天运营日记
  • 井云科技2D交互数字人:让智能服务触手可及的实用方案
  • KSP与ASM深度对比:原理、性能与使用场景
  • SpringBoot怎么查看服务端的日志
  • sqli-labs通关笔记-第28a关GET字符注入(关键字过滤绕过 手注法)
  • USB Device(VID_1f3a_PID_efe8) 驱动叹号
  • ART数据库索引结构--ART,The adaptive radix tree论文细读
  • 基于落霞归雁思维框架的软件需求管理实践指南
  • 字节Seed发布扩散语言模型,推理速度达2146 tokens/s,比同规模自回归快5.4倍
  • 【C++/STL】vector的OJ,深度剖析和模拟实现
  • Java多线程入门-基础概念与线程操作
  • JVM 01 运行区域
  • 动态规划经典模型:双数组问题的通用解决框架与实战
  • C++ STL 组件及其关系:从模块化设计到图形化展示
  • SpringBoot AOP
  • CYUSB3014-BZXC-USB3.0接口芯片-富利威
  • python---literal_eval函数
  • Python管道编程解析:构建高效数据流处理框架
  • Redis从入门到实战
  • Effective C++ 条款18:让接口容易被正确使用,不易被误用
  • IOT物联网平台发布,可私有化部署
  • 算法刷题【面试经典150题】
  • 技巧|SwanLab记录PR曲线攻略
  • 【Unity3D实例-功能-移动】小兵移动-通过鼠标点击进行
  • 【微实验】弦振动 MATLAB 物理模型 动画仿真