Redis命令---Hash(哈希)篇 (超全)

news2024/12/27 11:11:32

目录

  • 1.Redis Hmset 命令 - 同时将多个 field-value (域-值)对设置到哈希表 key 中。
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 如果命令执行成功,返回 OK 。
    • 示例
  • 2.Redis Hmget 命令 - 获取所有给定字段的值
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。
    • 示例
  • 3.Redis Hset 命令 - 将哈希表 key 中的字段 field 的值设为 value 。
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。
    • 示例
  • 4.Redis Hgetall 命令 - 获取在哈希表中指定 key 的所有字段和值
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。
    • 示例
  • 5.Redis Hget 命令 - 获取存储在哈希表中指定字段的值/td>
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil 。
    • 示例
  • 6.Redis Hexists 命令 - 查看哈希表 key 中,指定的字段是否存在。
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。
    • 示例
  • 7.Redis Hincrby 命令 - 为哈希表 key 中的指定字段的整数值加上增量 increment 。
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 执行 HINCRBY 命令之后,哈希表中字段的值。
    • 示例
  • 8.Redis Hlen 命令 - 获取哈希表中字段的数量
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 哈希表中字段的数量。 当 key 不存在时,返回 0 。
    • 示例
  • 9.Redis Hdel 命令 - 删除一个或多个哈希表字段
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 被成功删除字段的数量,不包括被忽略的字段。
    • 示例
  • 10.Redis Hvals 命令 - 获取哈希表中所有值
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 一个包含哈希表中所有值的表。 当 key 不存在时,返回一个空表。
    • 示例
  • 11.Redis Hincrbyfloat 命令 - 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
    • 简介
    • 语法
      • 可用版本: >= 2.6.0
      • 返回值: 执行 Hincrbyfloat 命令之后,哈希表中字段的值。
    • 示例
  • 12.Redis Hkeys 命令 - 获取所有哈希表中的字段
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 包含哈希表中所有字段的列表。 当 key 不存在时,返回一个空列表。
    • 示例
  • 13.Redis Hsetnx 命令 - 只有在字段 field 不存在时,设置哈希表字段的值。
    • 简介
    • 语法
      • 可用版本: >= 2.0.0
      • 返回值: 设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。
    • 示例
  • 总结

1.Redis Hmset 命令 - 同时将多个 field-value (域-值)对设置到哈希表 key 中。

简介

如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。此命令会覆盖哈希表中已存在的字段。Redis Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN

可用版本: >= 2.0.0

返回值: 如果命令执行成功,返回 OK 。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo" field2 "bar"
OK
redis 127.0.0.1:6379> HGET myhash field1
"foo"
redis 127.0.0.1:6379> HMGET myhash field2
"bar"

2.Redis Hmget 命令 - 获取所有给定字段的值

简介

如果指定的字段不存在于哈希表,那么返回一个 nil 值。Redis Hmget 命令用于返回哈希表中,一个或多个给定字段的值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HMGET KEY_NAME FIELD1...FIELDN

可用版本: >= 2.0.0

返回值: 一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HMGET myhash field1 field2 nofield
1) "foo"
2) "bar"
3) (nil)

3.Redis Hset 命令 - 将哈希表 key 中的字段 field 的值设为 value 。

简介

如果字段已经存在于哈希表中,旧值将被覆盖。如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。Redis Hset 命令用于为哈希表中的字段赋值 。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE

可用版本: >= 2.0.0

返回值: 如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
OK
redis 127.0.0.1:6379> HGET myhash field1
"foo"

redis 127.0.0.1:6379> HSET website google "www.g.cn"       # 设置一个新域
(integer) 1

redis 127.0.0.1:6379>HSET website google "www.google.com" # 覆盖一个旧域
(integer) 0

4.Redis Hgetall 命令 - 获取在哈希表中指定 key 的所有字段和值

简介

在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。Redis Hgetall 命令用于返回哈希表中,所有的字段和值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HGETALL KEY_NAME

可用版本: >= 2.0.0

返回值: 以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"

5.Redis Hget 命令 - 获取存储在哈希表中指定字段的值/td>

简介

Redis Hget 命令用于返回哈希表中指定字段的值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HGET KEY_NAME FIELD_NAME

可用版本: >= 2.0.0

返回值: 返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil 。

示例

# 字段存在

redis> HSET site redis redis.com
(integer) 1

redis> HGET site redis
"redis.com"


# 字段不存在

redis> HGET site mysql
(nil)

6.Redis Hexists 命令 - 查看哈希表 key 中,指定的字段是否存在。

简介

Redis Hexists 命令用于查看哈希表的指定字段是否存在。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HEXISTS KEY_NAME FIELD_NAME

可用版本: >= 2.0.0

返回值: 如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。

示例

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

7.Redis Hincrby 命令 - 为哈希表 key 中的指定字段的整数值加上增量 increment 。

简介

本操作的值被限制在 64 位(bit)有符号数字表示之内。对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。增量也可以为负数,相当于对指定字段进行减法操作。Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本: >= 2.0.0

返回值: 执行 HINCRBY 命令之后,哈希表中字段的值。

示例

redis 127.0.0.1:6379> HSET myhash field1 20
(integer) 1
redis 127.0.0.1:6379> HINCRBY myhash field 1
(integer) 21
redis 127.0.0.1:6379> HINCRBY myhash field -1
(integer) 20

8.Redis Hlen 命令 - 获取哈希表中字段的数量

简介

Redis Hlen 命令用于获取哈希表中字段的数量。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HLEN KEY_NAME

可用版本: >= 2.0.0

返回值: 哈希表中字段的数量。 当 key 不存在时,返回 0 。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HLEN myhash
(integer) 2

9.Redis Hdel 命令 - 删除一个或多个哈希表字段

简介

Redis Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HDEL KEY_NAME FIELD1.. FIELDN

可用版本: >= 2.0.0

返回值: 被成功删除字段的数量,不包括被忽略的字段。

示例

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

10.Redis Hvals 命令 - 获取哈希表中所有值

简介

Redis Hvals 命令返回哈希表所有字段的值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HVALS KEY_NAME FIELD VALUE

可用版本: >= 2.0.0

返回值: 一个包含哈希表中所有值的表。 当 key 不存在时,返回一个空表。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HVALS myhash
1) "foo"
2) "bar"

# 空哈希表/不存在的key

redis 127.0.0.1:6379> EXISTS not_exists
(integer) 0

redis 127.0.0.1:6379> HVALS not_exists
(empty list or set)

11.Redis Hincrbyfloat 命令 - 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

简介

如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。Redis Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HINCRBYFLOAT KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本: >= 2.6.0

返回值: 执行 Hincrbyfloat 命令之后,哈希表中字段的值。

示例

redis 127.0.0.1:6379> HSET myhash field 20.50
(integer) 1
redis 127.0.0.1:6379> HINCRBYFLOAT mykey field 0.1
"20.60"

12.Redis Hkeys 命令 - 获取所有哈希表中的字段

简介

Redis Hkeys 命令用于获取哈希表中的所有字段名。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HKEYS KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本: >= 2.0.0

返回值: 包含哈希表中所有字段的列表。 当 key 不存在时,返回一个空列表。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HKEYS myhash
1) "field1"
2) "field2"

13.Redis Hsetnx 命令 - 只有在字段 field 不存在时,设置哈希表字段的值。

简介

如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。如果字段已经存在于哈希表中,操作无效。如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值 。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HSETNX KEY_NAME FIELD VALUE

可用版本: >= 2.0.0

返回值: 设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。

示例

redis 127.0.0.1:6379> HSETNX myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSETNX myhash field1 "bar"
(integer) 0
redis 127.0.0.1:6379> HGET myhash field1
"foo"

redis 127.0.0.1:6379> HSETNX nosql key-value-store redis
(integer) 1

redis 127.0.0.1:6379> HSETNX nosql key-value-store redis       # 操作无效, key-value-store 已存在
(integer) 0

总结

在这里插入图片描述

往期回顾
Redis命令—String篇 (超全)
Redis命令—key篇 (超全)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1352280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Simple Facebook Sign-In

简单的Facebook登录为Android、iOS、Windows、Mac、通用Windows平台(UWP)和Unity制作的WebGL应用程序提供了基于OAuth 2.0的Facebook登录。 优点: ● 跨平台游戏和应用程序的跨平台用户身份验证 ● 无插件,无第三方库,无依赖● 对建筑规模没有影响 ● 客户端-服务器应…

PMP证书可以挂靠吗?

PMP证书不是国内的证书,挂靠不了呀,想挂靠,可以考软考/一建等,里面也有项目管理相关的证书。 PMP证书虽然不能挂靠,但是用处还是很大的,例如提升个人能力、薪资待遇,还有持证可享一些城市的福利…

kafka容灾演练的方案

背景 kafka可以通过MirrorMaker工具把集群的数据从一个集群同步到另一个集群,通过在另一个数据中心创建灾备集群的方式可以做到容灾的效果,但是如果我们不通过如此重量级的工具也想达到容灾演练的目的,可以怎么做呢 kafka简单容灾实现 当原kafka集群发…

计算机网络--作业

作业一 1、比较电路交换、报文交换和分组报文交换优缺点 电路交换 电路交换是以电路连接为目的的交换方式,通信之前要在通信双方之间建立一条被双方独占的物理通道(由通信双方之间的交换设备和链路逐段连接而成)。 优点: ①由于…

MyBatis学习一:快速入门

前言 公司要求没办法,前端也要了解一下后端知识,这里记录一下自己的学习 学习教程:黑马mybatis教程全套视频教程,2天Mybatis框架从入门到精通 文档: https://mybatis.net.cn/index.html MyBatis 快速入门&#xf…

HackTheBox - Medium - Linux - Bagel

Bagel 今天我开始了《Red Team Development and Operations A Practical Guide》的学习,保持学习,后面差不多到时机后就学CRTOⅡ Bagel 是一款中等难度的 Linux 机器,其特点是电子商店容易受到路径遍历攻击,通过该攻击可以获取应…

Tinker 环境下数据表的用法

如果我们要自己手动创建一个模型文件,最简单的方式是通过 make:model 来创建。 php artisan make:model Article 删除模型文件 rm app/Models/Article.php 创建模型的同时顺便创建数据库迁移 php artisan make:model Article -m Eloquent 表命名约定 在该文件中&am…

k8s中实现pod自动扩缩容

一、k8s应用自动扩缩容概述 1)背景: 在实际的业务场景中,我们经常会遇到某个服务需要扩容的场景(例如:测试对服务压测、电商平台秒杀、大促活动、或由于资源紧张、工作负载降低等都需要对服务实例数进行扩缩容操作&…

SD-WAN组网方式详解

企业网络的演进势不可挡,对于高效、可靠的网络连接需求日益增加。SD-WAN(软件定义广域网)作为一项创新的网络技术,备受企业青睐并得到广泛应用。SD-WAN提供了多种灵活的组网方式,以满足企业多样化的需求和不同的网络环…

AI实景无人直播创业项目:开启自动直播新时代,一部手机即可实现财富增长

在当今社会,直播已经成为了人们日常生活中不可或缺的一部分。无论是商家推广产品、明星互动粉丝还是普通人分享生活,直播已经渗透到了各行各业。然而,传统直播方式存在着一些不足之处,如需现场主持人操作、高昂的费用等。近年来&a…

亚信安慧AntDB数据库引领数字时代:数字驱动创新峰会主旨演讲深度解析

近日,庄严肃穆的数字驱动创新峰会在中国首都北京隆重召开,聚焦于探讨数据经济的创新前沿。在此次盛会中,备受瞩目的亚信安慧AntDB数据库荣幸受邀参与,该数据库的副总裁张桦以其深刻见解和卓越经验发表了引人瞩目的主旨演讲。 图1&…

立体匹配算法(Stereo correspondence)

SGM(Semi-Global Matching)原理: SGM的原理在wiki百科和matlab官网上有比较详细的解释: wiki matlab 如果想完全了解原理还是建议看原论文 paper(我就不看了,懒癌犯了。) 优质论文解读和代码实现 一位大神自己用c实现…

系列九、Feign

一、Feign 1.1、Java中如何实现跨接口调用 (1) Httpclient Httpclient是Apache Jakarta Comon下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议的最新版本和建议。HttpC…

鸿蒙原生应用再添新丁!中国移动 入局鸿蒙

鸿蒙原生应用再添新丁!中国移动 入局鸿蒙 来自 HarmonyOS 微博1月2日消息,#中国移动APP启动鸿蒙原生应用开发#,拥有超3亿用户的中国移动APP宣布,正式基于HarmonyOS NEXT启动#鸿蒙原生应用#及元服务开发。#HarmonyOS#系统的分布式…

openGauss学习笔记-183 openGauss 数据库运维-升级-升级操作

文章目录 openGauss学习笔记-183 openGauss 数据库运维-升级-升级操作183.1 就地升级和灰度升级操作步骤 openGauss学习笔记-183 openGauss 数据库运维-升级-升级操作 介绍就地升级、灰度升级和滚动升级的详细操作。 183.1 就地升级和灰度升级操作步骤 以root身份登录节点。 …

突发!博世「裁员」

对于未来几年的汽车行业需求变化,一级零部件供应商正在加快「降本增效」举措,犹如下游客户更加倾向于降本,而不是无休止的提升整车性能,比如,续航里程、智能化。 本周,全球汽车零部件龙头供应商博世宣布&am…

每日一题 2487. 从链表中移除节点(中等,回溯)

显然只要从后往前遍历链表,设 t 为当前的最大值,只要在遍历过程中比 t 小的节点都删除,大于等于 t 的则更新 t 为新的节点 通过递归回溯的方法可以很简单地实现从后往前遍历链表 # Definition for singly-linked list. # class ListNode: # …

SpringBoot实现Websocket聊天交友微信小程序(一)

记录一下我开发一个交友微信小程序并且上线运营的心得体会。 2022年10月1日上线的,到目前终于实现每天收益300左右。 界面比较简洁,功能有动态,动态可以选择话题,相册,相册可以设置看广告解锁,私信&#…

CCF模拟题 202312-2 因子化简

CCF模拟题 202312-2 因子化简 问题描述 试题编号: 202312-2 试题名称: 因子化简 时间限制: 2.0s 内存限制: 512.0MB 题目背景 质数(又称“素数”)是指在大于 1 的自然数中,除了 1 和它本身以外…

Nginx多ip部署多站点

目录 1.修改网卡配置信息 2.修改主要配置文件nginx.conf 1.修改网卡配置信息 1)来到网卡配置文件存放目录下 cd /etc/sysconfig/network-scripts/ 2)对 ifcfg-ens33 文件进行配置修改前先进行备份 cp ifcfg-ens33 ifcfg-ens33.default 3)先修改成最小配置,使用 d…