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

目录

[Redis 哈希类型简介](#Redis 哈希类型简介)

[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 ...] | 删除 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) |

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

相关推荐
qq_321665331 小时前
mysql 数据库迁移到达梦数据库
数据库·mysql
Hello.Reader2 小时前
Redis大Key问题全解析
数据库·redis·bootstrap
冠位观测者3 小时前
【Leetcode 热题 100】208. 实现 Trie (前缀树)
数据结构·算法·leetcode
靖顺4 小时前
【OceanBase 诊断调优】—— packet fly cost too much time 的根因分析
数据库·oceanbase
liuxin334455664 小时前
学籍管理系统:实现教育管理现代化
java·开发语言·前端·数据库·安全
海绵波波1074 小时前
flask后端开发(10):问答平台项目结构搭建
后端·python·flask
B1nna5 小时前
Redis学习(三)缓存
redis·学习·缓存
网络风云5 小时前
【魅力golang】之-反射
开发语言·后端·golang
Q_19284999065 小时前
基于Spring Boot的电影售票系统
java·spring boot·后端
kittygilr6 小时前
matlab中的cell
开发语言·数据结构·matlab