速通Redis基础(二):掌握Redis的哈希类型和命令

news/2024/12/23 3:03:45/

目录

Redis 哈希类型简介

Redis 哈希命令

HSET

HGET

HEXISTS 

HDEL 

HKEYS 

HVALS 

HGETALL

HMGET 

 HLEN

HSETNX 

​编辑 

HINCRBY  

HINCRBYFLOAT 

Redis的哈希类型命令小结


Redis 是一种高性能的键值存储数据库,支持多种数据类型,其中之一就是哈希(Hash)。哈希是一种键值对的集合,适合存储对象的属性或配置参数等信息。在本文中,我们将深入探讨 Redis 的哈希类型及其相关命令。

Redis 哈希类型简介

哈希类型是 Redis 的一种数据结构,它以键值对的方式存储多个字段和对应的值,每个字段都是一个字符串。哈希适用于存储具有多个属性的对象,例如用户信息、产品属性、配置参数等。哈希类型的键可以是字符串,但字段名必须是唯一的。

下面是一个示例:

HMSET user:1 username "john" age 30 email "john@example.com"

在上面的例子中,我们创建了一个名为 user:1 的哈希类型,它包含了用户名、年龄和电子邮件地址这三个字段和对应的值。

接下来,让我们了解一些常用的 Redis 哈希命令。

Redis 哈希命令

HSET

设置 hash 中指定的字段(field)的值(value)。

语法:

HSET key field value [field value ...]

时间复杂度:插入一组 field 为 O(1), 插入 N 组 field 为 O(N)

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

HGET

获取 hash 中指定字段的值。

语法:

HGET key field

HGET key field

时间复杂度:O(1)

返回值:字段对应的值或者 nil 

示例:

 


HEXISTS 

判断 hash 中是否有指定的字段。

语法:

HEXISTS key field

时间复杂度:O(1)

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

示例:

HDEL 

删除 hash 中指定的字段。

语法:

HDEL key field [field ...]

时间复杂度:删除⼀个元素为 O(1),删除 N 个元素为 O(N)

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

示例:

HKEYS 

获取 hash 中的所有字段。

语法:

HKEYS key

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

返回值:字段列表。

HVALS 

获取 hash 中的所有的值。

语法:

 HVALS key

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

返回值:所有的值。

示例:

HGETALL

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

语法:

HGETALL key

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

返回值:字段和对应的值。

示例:

HMGET 

⼀次获取 hash 中多个字段的值。

语法:

HMGET key field [field ...]

时间复杂度:只查询⼀个元素为 O(1), 查询多个元素为 O(N), N 为查询元素个数

返回值:字段对应的值或者 nil。

示例:

 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 

HINCRBY 的浮点数版本。

语法:

HINCRBYFLOAT key field increment

时间复杂度:O(1)

返回值:该字段变化之后的值。

Redis的哈希类型命令小结

命令执行效果时间复杂度
hset key field value设置值O(1)
hget key field获取值O(1)
hdel key field [field ...]删除 fieldO(k), k 是 field 个数
hlen key计算 field 个数O(1)
hgetall key获取所有的 field-valueO(k), k 是 field 个数
hmget field [field ...]批量获取 field-valueO(k), k 是 field 个数
hmset field value [field value ...]批量获取 field-valueO(k), k 是 field 个数
hexists key field判断 field 是否存在O(1)
hkeys key获取所有的 fieldO(k), k 是 field 个数
hvals key获取所有的 valueO(k), k 是 field 个数
hsetnx key field value设置值,但必须在 field 不存在时才能设置成功O(1)
hincrby key field n对应 field-value +nO(1)
hincrbyfloat key field n对应 field-value +nO(1)
hstrlen key field计算 value 的字符串长度O(1)

制作不易,希望大家多多支持噢~~🤗


http://www.ppmy.cn/news/1145305.html

相关文章

嵌入式养成计划-33--数据库-sqlite3

七十一、 数据库 71.1 数据库基本概念 数据(Data) 能够输入计算机并能被计算机程序识别和处理的信息集合数据库 (Database)数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合 常用的数据库 大型数…

vue怎样封装接口

Vue可以使用axios来发送HTTP请求,通过封装axios可以实现接口的统一管理和调用。下面是一个简单的封装接口的示例。 安装axios 在项目中安装axios依赖,可以使用npm或者yarn命令进行安装。 npm install axios --save创建api.js文件 在项目中创建一个ap…

# 02 初识Verilog HDL

02 初识Verilog HDL ‍ 对于Verilog的语言的学习,我认为没必要一开始就从头到尾认真的学习这个语言,把这个语言所有细节都搞清楚也不现实,我们能够看懂当前FPGA的代码的程度就可以了,随着学习FPGA深度的增加,再不断的…

一文告知HTTP GET是否可以有请求体

HTTP GET是否可以有请求体 先说结论: HTTP协议没有规定GET请求不能携带请求体,但是部分浏览器会不支持,因此不建议GET请求携带请求体。 HTTP 协议没有为 GET 请求的 body 赋予语义,也就是即不要求也不禁止 GET 请求带 body。大多数…

华为云云耀云服务器L实例评测|企业项目最佳实践之华为云介绍(二)

华为云云耀云服务器L实例评测|企业项目最佳实践系列: 华为云云耀云服务器L实例评测|企业项目最佳实践之云服务器介绍(一) 华为云云耀云服务器L实例评测|企业项目最佳实践之华为云介绍(二) 华为云云耀云服务器L实例评测&#xff5…

【电商API接口的应用:电商数据分析入门】初识Web API(一)

如何使用Web应用变成接口(API)自动请求网站到特定信息而不是整个网站,再对这些信息进行可视化。由于这样编写到程序始终使用最新到数据来生成可视化,因此即便数据瞬息万变,它呈现到信息也都是最新的。 使用Web API Web API是网站的一部分&am…

面试总结-Redis篇章(十二)——Redis是单线程的,为什么还那么快

Redis是单线程的,为什么还那么快 Redis是单线程的,为什么还那么快什么是IO多路复用 阻塞IO非阻塞IOIO多路复用 Redis是单线程的,为什么还那么快 Redis是纯内存操作,执行速度非常快采用单线程,避免不必要的上下文切换可…

为Yolov7环境安装Cuba匹配的Pytorch

1. 查看Cuba版本 方法一 nvidia-smi 找到CUDA Version 方法二 Nvidia Control Panel > 系统信息 > 组件 > 2. 安装Cuba匹配版本的PyTorch https://pytorch.org/get-started/locally/这里使用conda安装 conda install pytorch torchvision torchaudio pytorch-cu…