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

Redis 7.x 系列【8】数据类型之哈希(Hash)

有道无术,术尚可求,有术无道,止于术。

本系列Redis 版本 7.2.5

源码地址:https://gitee.com/pearl-organization/study-redis-demo

文章目录

    • 1. 概述
    • 2. 常用命令
      • 2.1 HSET
      • 2.2 HGET
      • 2.3 HDEL
      • 2.4 HEXISTS
      • 2.5 HGETALL
      • 2.6 HKEYS
      • 2.7 HLEN
      • 2.7 HVALS
    • 3. 应用场景

1. 概述

Redis Hash 是一个键值对集合,是一个 string 类型的 field(字段) 和 value(值) 的映射表,类似 Java 里面中的 Map<String,Object>,特别适合用于存储对象。
在这里插入图片描述

2. 常用命令

Hash 相关的所有命令:

命名描述
HDEL用于删除哈希表中一个或多个字段
HEXISTS用于判断哈希表中字段是否存在
HEXPIRE设置一个或多个字段的过期时间,秒为单位
HEXPIREATHEXPIREAT具有与HEXPIRE相同的效果和语义,但它没有指定TTL(生存时间)的秒数,而是使用Unix时间戳(以秒为单位)
HEXPIRETIME给定key字段将在该时间点过期,返回自Unix时间戳(以秒为单位)
HGET获取存储在哈希表中指定字段的值
HGETALL获取在哈希表中指定 key 的所有字段和值
HINCRBY为存储在 key 中的哈希表指定字段做整数增量运算
HINCRBYFLOAT为存储在 key 中的哈希表指定字段值加上指定浮点数增量值
HKEYS获取存储在 key 中的哈希表的所有字段
HLEN获取存储在 key 中的哈希表的字段数量
HMGET用于获取存储在 key 中的哈希表字段的值
HMSET用于设置存储在 key 中的哈希表字段的值
HPERSIST删除 key字段上现有的过期时间
HPEXPIREHEXPIRE类似,以毫秒为单位
HPEXPIREATHEXPIRE类似,使用Unix时间戳
HPEXPIRETIMEHEXPIRETIME具有相同的语义,使用Unix时间戳(以毫秒为单位)
HPTTLHTTL一样,返回具有过期设置的字段的剩余TTL(生存时间),但以毫秒而不是秒为单位
HRANDFIELD随机获取字段和值
HSCAN返回的每个元素都是一个元组,每一个元组元素由一个字段和值组成
HSET为哈希表中的字段赋值
HSETNX用于为哈希表中不存在的的字段赋值
HSTRLEN返回字段关联的值的字符串长度,如果键或字段不存在,则返回0
HTTL返回具有过期设置的字段的剩余TTL(生存时间),秒为单位
HVALS用于获取哈希表中的所有值

2.1 HSET

HSET 命令用于为存储在 key 中的哈希表的 field 字段赋值 value 。只有被修改返回0 ,有增加返回增加的 field 个数。

注意事项:

  • 如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
  • 如果字段(field)已经存在于哈希表中,旧值将被覆盖。
  • Redis 4.0 起,HSET 可以一次设置一个或多个 field/value 对。

基本语法:

 HSET key field value [field value ...]

示例:

redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field1 "Hello" field2 "world" field3 "!"
(integer) 2
redis> HGET myhash field1
"Hello"

2.2 HGET

HGET 命令用于返回哈希表中指定字段 field 的值,如果给定的字段或 key 不存在时,返回 nil

示例:

redis> HSET myhash field1 "foo"
(integer) 1
# 字段存在
redis> HGET myhash field1
"foo"
# 字段不存在
redis> HGET myhash field2
(nil)

2.3 HDEL

HDEL 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。 如果 key 不存在,会被当作空哈希表处理并返回 0

基本语法:

HDEL key field [field ...]

示例:

redis> HSET myhash field1 "foo"
(integer) 1
redis> HDEL myhash field1
(integer) 1
redis> HDEL myhash field2
(integer) 0

2.4 HEXISTS

HEXISTS 命令用于查看哈希表的指定字段 field 是否存在。

返回值:

  • 1 :哈希表含有给定字段 field
  • 0 :哈希表不含有给定字段,或 key 不存在。

基本语法:

HEXISTS key field

示例:

redis> HSET myhash field1 "foo"
(integer) 1
redis> HEXISTS myhash field1
(integer) 1
redis> HEXISTS myhash field2
(integer) 0

2.5 HGETALL

HGETALL 命令用于返回存储在 key 中的哈希表中所有的字段和值。在返回值里,紧跟每个字段之后是字段的值,所以返回值的长度是哈希表大小的两倍。

基本语法:

HGETALL key

示例:

redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"

2.6 HKEYS

HKEYS 返回存储在 key 中哈希表的所有字段。在返回值里,紧跟每个字段之后是字段的值,所以返回值的长度是哈希表大小的两倍。

基本语法:

HKEYS key

示例:

redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HKEYS myhash
1) "field1"
2) "field2"

2.7 HLEN

HLEN 命令用于获取哈希表中字段的数量,当 key 不存在时,返回 0

基本语法:

HLEN key

示例:

redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HLEN myhash
(integer) 2

2.7 HVALS

HVALS 命令返回哈希表所有字段值, 当 key 不存在时,返回空表。

基本语法:

HVALS key

示例:

redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HVALS myhash
1) "Hello"
2) "World"

3. 应用场景

Hash 数据结构查找快、结构灵活,非常适用于存储一些结构化数据,作为数据库缓存提高读写能力。比如登录用户信息、系统参数信息、配置信息等,同时也支持计数器相关功能。

例如,系统的一些配置参数,都是键值对,适合使用Hash 存储:

在这里插入图片描述
例如,存入两个登录页面需要查询的配置参数:

localhost:0>HMSET sys:params login_enabled_dingding true login_enabled_wx false
"OK"

可视化界面显示如下:
在这里插入图片描述
可以快速查询配置参数:

localhost:0>HGET sys:params login_enabled_dingding
"true"
http://www.lryc.cn/news/384463.html

相关文章:

  • jetson 安装 Rustdesk失败
  • Vue原生写全选反选框
  • typescript学习回顾(三)
  • 算尽天下财,铸就大明梦 —— 大明钱算子夏元吉的传奇一生
  • openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 二(51-)
  • 读AI新生:破解人机共存密码笔记13有益机器
  • Spring Boot中使用Swagger生成API文档
  • 解决 macOS 中“无法验证开发者”的问题
  • Emp.dll文件丢失?理解Emp.dll重要性与处理常见问题
  • 知识平台管理系统设计
  • Python 中字符串修饰符
  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全RBCD资源Operators组成员HTLMRelay结合
  • Manjaro Linux系统简介和archlinux哲学
  • 【Windows 常用工具系列 17 -- windows bat 脚本多参数处理】
  • 《Windows API每日一练》6.3 非客户区鼠标消息
  • Http客户端-Feign 学习笔记
  • 【Linux】进程信号_2
  • 关于五度圈
  • 电脑突然提示dll文件丢失,怎么选择正确的恢复方法?
  • HTML(12)——背景属性
  • C语言 指针——从函数返回字符串
  • java:aocache:基于aspectJ实现的方法缓存工具
  • UE4_材质_湿度着色器及Desaturation算法_ben材质教程
  • AI问答-ERP:理解 ERP / 我国ERP发展现状 / ERP软件有哪些 / 华为自研ERP
  • C语言 | Leetcode C++题解之第199题二叉树的右视图
  • java:aocache的单实例缓存
  • c++11 abi 兼容性
  • 获取个人免费版Ubuntu Pro
  • Pinia的基本用法
  • 正版软件 | DeskScapes:将您的桌面变成生动的画布