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

Redis-Hash类型

字符串和哈希是有很明显的区别:

哈希类型中的映射关系通常为 field-value ,是用来区分 Redis 整体的键值对

以下只介绍基本的命令,方便直接使用

命令

HSET

设置 hash 中指定的字段的值 字段:field 值:value

# 括号内的不是必须项
hset key field value {field value……}

时间复杂度: O(N) N表示插入的N组field

返回值: 添加的字段的个数

例子:

HGET

获取 hash 中指定字段的值

hget key field 

时间复杂度: O(1)

返回值: 对应 key 中对应 field 的值,如果找不到key或者field就会返回 nil

例子:

HMGET

一次性获取 hash 中的多个字段的值

hmget key field {key field}

时间复杂度: O(N) N表示查询的元素个数

返回值: 字段对应的值,如果没有该字段就会返回 nil

HGETALL

获得hash中的所有字段以及对应的值

hgetall key

时间复杂度: O(N) N表示有N组field

返回值: 所有的字段和值

不过需要注意的是: 使用 HGETALL 时,元素过多可能会造成阻塞

此时就需要判断到底是使用 HETALL 还是使用 HMGET

HEXISTS

判断 hash 中是否有指定的字段(field)

hexists key field

时间复杂度: O(1)

返回值: 1 表示存在, 0 表示不存在

例子:

HDEL

删除 hash 中指定的字段

hdel key field {field……}

时间复杂度: O(N) N表示要删除的字段的个数

返回值: 本次操作被删除的字段个数

例子:

HKEYS

获取 hash 中的所有字段名(没有值)

hkeys key

时间复杂度: O(N) N为hash中field的个数

返回值: 对应的所有字段,字段列表

HVALS

获取 hash 中的所有的值

hvals key

时间复杂度: O(N) N表示对应的key中的field的个数

返回值: 所有的值

HLEN

获取 hash 中的所有字段的个数

hlen key

时间复杂度: O(1)

返回值: 字段的个数

HSETNX

在字段不存在(必须不存在)的情况下,设置 hash 中的字段和值

hsetnx key field value

时间复杂度: O(1)

返回值: 1 表示设置成功, 0 表示失败

HINCRBY

将 hash 中字段对应的数值添加指定的值

hincrby key field increment

时间复杂度: O(1)

返回值: 操作成功之后的值

HINCRBYFLOAT

修改的数值为浮点型

hincrbyfloat key field increment

时间复杂度: O(1)

返回值: 操作成功之后的值

命令总结

命令

执行结果

时间复杂度

hset key field value

设置值

O(1)

hget key field

获取值

O(1)

hdel key field [field ...]

删除field

O(k), k是field个数

hlen key

计算field个数

O(1)

hgetall key

获取所有的field-value

O(k), k是field个数

hmget field [field ...]

批量获取field-value

O(k), k是field个数

hmset field value [field value ...]

批量设置field-value

O(k), k是field个数

hexists key field

判断field是否存在

O(1)

hkeys key

获取所有的field

O(k), k是field个数

hvals key

获取所有的value

O(k), k是field个数

hsetnx key field value

设置值(仅当field不存在时成功)

O(1)

hincrby key field n

对field的value增加整数n

O(1)

hincrbyfloat key field n

对field的value增加浮点数n

O(1)

hstrlen key field

计算value的字符串长度

O(1)

内部编码

哈希表内部有两种内部编码

  • Ziplist: 当 field 个数较少且没有较大的 value

  • Hashtable: 当有 value 大于 64 字节

  • 同时如果 field 个数超过 512 个也会转变为 hashtable

http://www.dtcms.com/a/112947.html

相关文章:

  • 我的购物车设计思考:从个人项目到生产实战思考的蜕变
  • 【Linux网络与网络编程】05.应用层自定义协议序列化和反序列化
  • Systemd构建自动化备份服务与外部存储管理
  • KAPC的前世今生--(下)下RPCRT4!NMP_SyncSendRecv函数分析
  • 去中心化指数(链上ETF)
  • 【小沐学Web3D】three.js 加载三维模型(React Three Fiber)
  • Cribl 通过Generic API新建 Dataset
  • 谈谈策略模式,策略模式的适用场景是什么?
  • 基本机动飞行性能
  • 车辆信息查询API——车辆车五项查询
  • 金融数据分析(Python)个人学习笔记(6):安装相关软件
  • PyTorch参数管理详解:从访问到初始化与共享
  • ARM架构与编程学习(四)(08_keil_gcc_Makefile)
  • 晶晨S905-S905L-S905LB_S905M2通刷_安卓6.0.1_16S极速开机_线刷固件包
  • 英语—四级CET4考试—蒙猜篇—匹配题
  • 测试:正交法设计测试用例
  • mysql数据库中getshell的方式总结
  • Java进阶-day06:反射、注解与动态代理深度解析
  • GPU显存占用高但利用率低的深度解析 (基于实际案例与技术文档)
  • python爬虫爬取淘宝热销(热门)台式电脑商品信息(课程设计;提供源码、使用说明文档及相关文档;售后可联系博主)
  • php8 命名参数使用教程
  • 跳跃连接(Skip Connection)与残差连接(Residual Connection)
  • 家庭路由器wifi设置LAN2LAN和LAN2WAN
  • STM32低功耗模式详解:睡眠、停机、待机模式原理与实践(下) | 零基础入门STM32第九十三步
  • 30信号和槽_带参数的信号槽(3)
  • [Linux]进程状态、僵尸进程处理回收、进程优先级 + 图例展示
  • kali——httrack
  • Tensorflow、Pytorch与Python、CUDA版本的对应关系(更新时间:2025年4月)
  • 6.1 python加载win32或者C#的dll的方法
  • 对应列表数据的分割和分组