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

【Redis】hash类型

目录

  • 1、介绍
  • 2、底层实现
    • 【1】压缩列表
    • 【2】哈希表
    • 【3】压缩列表和哈希表对比
    • 【4】listpack(Redis7.0+使用)
  • 3、常用指令
  • 4、使用场景

1、介绍

Redis的hash是一种键值对集合类型,用于存储对象或结构化数据。其核心特点就是将多个字段(field)与值(value)映射到同一个键(key)下,适用于存储具有多个属性的实体。

2、底层实现

【1】压缩列表

适用条件

1、字段数量 ≤ hash-max-ziplist-entries(默认512)
2、每个字段名和值的字符串长度 ≤ hash-max-ziplist-value(默认64字节)

【2】哈希表

适用条件

任一字段或值超过长度限制,或字段总数超过阈值时

【3】压缩列表和哈希表对比

特性压缩列表哈希表
内存占用极低(连续存储、无指针开销)较高(需存储指针、链表节点等元数据)
查询效率平均O(n)(需遍历)平均O(1)(直接哈希定位)
插入/删除效率平均O(n)(需移动后续元素)平均O(1)(链表操作或扩容)
适用场景字段数少且值小字段数多或值较大时自动切换
扩容开销无需显示扩容需渐进式rehash(可能短暂阻塞)
内存碎片几乎无碎片(连续内存)可能会产生碎片(平凡增删时)

【4】listpack(Redis7.0+使用)

在Redis 7.0中,压缩列表数据结构被替换成listpack数据结构来实现。

3、常用指令

命令语法作用
HSETHSET key field value设置哈希表中字段的值
HGETHGET key field获取哈希表中字段的值
HMSETHMSET key field1 value1 [field2 value2 …]批量设置哈希表的字段(redis4.0中HSET支持批量)
HMGETHMGET key field1 [field2 …]批量获取哈希表的字段值
HGETALLHGETALL key获取哈希表中所有字段和值
HDELHDEL key field1 [field2 …]删除哈希表中的一个或多个字段
HEXISTSHEXIST key field检查哈希表中字段是否存在
HKEYSHKEYS key获取哈希表中所有字段名
HVALSHVALS key获取哈希表中所有字段值
HLENHLEN key获取哈希表中字段数量
HINCRBYHINCRBY key field increment对哈希表中的字段值进行整数增量操作
HINCRBYFLOATHINCRBYFLOAT key field increment对哈希表中的字段值进行浮点数增量操作
HSETNXHSETNX key field value仅当字段不存在时设置值

4、使用场景

特性适用命令使用场景
对象存储HSET/HGET/HGETALL存储结构化对象(如用户、商品信息),避免为每个属性创建独立key
批量读写HMSET/HMGET/新版HSET批量初始化或更新对象属性,减少网络请求次数
计数器HINCRBY/ HINCRBYFLOAT原子性增减数值(如用户积分、库存、点赞)
http://www.xdnf.cn/news/2131.html

相关文章:

  • 每日c/c++题 备战蓝桥杯(P1252洛谷 马拉松接力赛)
  • 《深入理解 AOP》
  • 数图信息科技邀您共赴第二十五届中国零售业博览会
  • spring中的@bean注解详解
  • Springoot、Flowable快速学习
  • 制作一款打飞机游戏25:添加数据
  • C++与Python编写二进制转十进制
  • 一种双模式机器人辅助股骨干骨折钢板植入方法
  • 【AI平台】n8n入门3:第二个工作流,链接网上大模型(含三种方式)
  • wireshark从HEX转储导入使用方法
  • 数学基础 -- 欧拉恒等式的魅力:让复数旋转起来!
  • MATLAB基础应用精讲-【基础知识篇】发布和共享 MATLAB 代码
  • 网络流量分析 | 流量分析基础
  • 机器学习基础 - 回归模型之线性回归
  • SD2351核心板:重构AI视觉产业价值链的“超级节点”
  • 【高频考点精讲】JavaScript事件循环机制:从宏任务微任务到渲染时机
  • MySQL数据库(13) 用户管理
  • Redis高效赋能机器学习实战:用FastAPI打造智能钓鱼邮件识别与缓存系统全流程解析
  • nacos设置权重进行负载均衡不生效
  • MongoDB 图片 URL 存储异常问题解决方案
  • C++入侵检测与网络攻防之网络嗅探以及ARP攻击
  • 【论文阅读】平滑量化:对大型语言模型进行准确高效的训练后量化
  • Linux文件管理(2)
  • 第十二届蓝桥杯 2021 C/C++组 直线
  • 深入理解网络原理:UDP协议详解
  • 如何用WordPress AI插件自动生成SEO文章,提升网站流量?
  • 每日两道leetcode(补充一)
  • Linux网络编程 原始套接字与ARP协议深度解析——从数据包构造到欺骗攻防
  • 配置Ubuntu18.04中的Qt Creator为中文(图文详解)
  • 腾讯PC客户端面经