【Redis】Redis 哈希 Hash 键值对集合操作 ( 哈希 Hash 键值对集合简介 | 查询操作 | 增加操作 | 修改操作 )

news2024/11/15 15:38:09

文章目录

  • 一、哈希 Hash 键值对集合
  • 二、查询操作
    • 1、Redis 中查询 Hash 键值对数据
    • 2、查询 Hash 键是否存在
    • 3、查询 Hash 中所有的键 Field
    • 4、查询 Hash 中所有的值
  • 三、增加操作
    • 1、Redis 中插入 Hash 键值对数据
    • 2、批量插入 Hash 键值对数据
  • 四、修改操作
    • 1、Hash 中 Field 键对应值增减值
    • 2、设置 Hash 中 Field 键对应值





一、哈希 Hash 键值对集合



Redis 中的 Hash 数据 是一个 键值对集合 , 类似于 Java 中的 Map 集合 ;


Hash 数据底层数据结构是 :

  • 压缩列表 ZipList : Hash 中的 键值对 长度较短时 使用 压缩列表 ;
  • 哈希表 HashTable : Hash 中的 键值对 长度较长时 使用 哈希表 ;

Redis 中存储对象的方式 :

  • 存储序列化之后的数据 : 将 对象 序列化为 json 字符串 , 然后 存储到 Redis 键值对 的 Value 值中 ;

    • 如果要修改对象中的数据 , 要 先将对象反序列化 , 然后修改对象中的值 , 最后将对象序列化并保存 ;
  • 直接存储对象字段 : 将每个对象的字段拆开 , 进行分开存储 , 非常繁琐 ;

    • 每个 Redis 的 键 都保存一个 对象字段 , 一个对象可能要消耗多个 键 ;
  • 使用 Hash 存储 ( 推荐 ) : 将 对象 的 字段 , 都以 Hash 的 键值对 形式存储起来 , 可以直接访问修改对应的对象字段 ;

    • 每个 Redis 键 保存一个对象 , 对象的属性 由 Hash 键值对 保存 ;

键值对区分 : Redis 中的键值对 一般称为 Key=Value , 在 Hash 中的键值对 一般称为 Field=Value ;





二、查询操作




1、Redis 中查询 Hash 键值对数据


执行

hget student name

命令 , 可以 获取 Redis 中 student 键 对应的 Hash 数据中的 name 键 对应的 值 ;


代码示例 :

127.0.0.1:6379> hset student name Tom
(integer) 1
127.0.0.1:6379> get student
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> hget student
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget student name
"Tom"
127.0.0.1:6379>

在这里插入图片描述

注意 : 读取该 Hash 的 name=Tom 键值对 时 , 需要使用 hget student name 命令 ;


2、查询 Hash 键是否存在


执行

hexists student name

命令 , 可以 获取 Redis 中 student 键 对应的 Hash 数据中的 name 键 是否存在 ;

  • 如果存在 , 返回 1 ;
  • 如果不存在 , 返回 0 ;

代码示例 :

127.0.0.1:6379> hexists student name
(integer) 1
127.0.0.1:6379> hexists student name1
(integer) 0
127.0.0.1:6379>

在这里插入图片描述


3、查询 Hash 中所有的键 Field


执行

hkeys student

命令 , 可以 获取 Redis 中 student 键 对应的 Hash 数据中的 所有 键 Field ;


代码示例 :

127.0.0.1:6379> hkeys student
1) "name"
2) "age"
127.0.0.1:6379>

在这里插入图片描述


4、查询 Hash 中所有的值


执行

hvals student

命令 , 可以 获取 Redis 中 student 键 对应的 Hash 数据中的 所有 值 ;


代码示例 :

127.0.0.1:6379>
127.0.0.1:6379> hvals student
1) "Tom"
2) "18"
127.0.0.1:6379>

在这里插入图片描述





三、增加操作




1、Redis 中插入 Hash 键值对数据


执行

hset student name Tom

命令 , 可以 给 键 student 中的 Hash 数据值 添加 name=Tom 键值对 ;


代码示例 :Redis 的 student 键值 插入 name=Tom 键值对 ;

127.0.0.1:6379> hset student name Tom
(integer) 1
127.0.0.1:6379> get student
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> hget student
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget student name
"Tom"
127.0.0.1:6379>

在这里插入图片描述

注意 : 读取该 Hash 的 name=Tom 键值对 时 , 需要使用 hget student name 命令 ;


2、批量插入 Hash 键值对数据


执行

hmset student name Tom age 18

命令 , 可以 给 键 student 中的 Hash 数据值 添加 name=Tom 和 age=18 键值对 ;


代码示例 :Redis 的 student 键值 插入 name=Tom 和 age=18 键值对 ;

127.0.0.1:6379> hmset student name Tom age 18
OK
127.0.0.1:6379> hget student age
"18"
127.0.0.1:6379> hget student name
"Tom"
127.0.0.1:6379>

在这里插入图片描述





四、修改操作




1、Hash 中 Field 键对应值增减值


执行

hincrby student age -5

命令 , 可以 给 键 student 中的 Hash 数据值 age=18 数据中的值 -5 操作 ;


代码示例 :

127.0.0.1:6379>
127.0.0.1:6379> hincrby student age -5
(integer) 13
127.0.0.1:6379> hvals student
1) "Tom"
2) "13"
127.0.0.1:6379>

在这里插入图片描述


2、设置 Hash 中 Field 键对应值


执行

hsetnx student weight 85

命令 , 可以 在 键 student 中的 Hash 数据值 如果不存在 weight 键 , 则 添加 weight=85 键值对数据 ;


代码示例 :

127.0.0.1:6379>
127.0.0.1:6379> hsetnx student weight 85
(integer) 1
127.0.0.1:6379> hkeys student
1) "name"
2) "age"
3) "weight"
127.0.0.1:6379>

在这里插入图片描述

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

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

相关文章

2|数据挖掘|聚类分析|k-means/k-均值算法

k-means算法k-means算法,也被称为k-平均或k-均值,是一种得到最广泛应用的聚类算法。算法首先随机选择k个对象,每个对象初始地代表了一个簇的平均值或中心。对剩余的每个对象根据其与各个簇中心的距离,将它赋给最近的簇。然后重新计…

XSS-labs-master

XSS 经典14关这边先说一下常用的弹窗手法<script>alert(1)</script> <script>confirm(1)</script> <script>alert(1)</script> <script>alert(/1/zyl)</script> <script>alert(document.cookie)</script> <scr…

Framework学习之旅:Zygote进程

概述 在Android系统中&#xff0c;DVM(Dalvik 虚拟机和ART、应用程序进程以及运行系统的关键服务SystemServer进程都是由Zygote进程来创建的。通过fork&#xff08;复制进程&#xff09;的形式来创建应用程进程和SystemServer进程&#xff0c;由于Zygote进程在启动时会创建DVM…

目标检测综述(一份全的自制PPT): 涵盖各种模型简介对比,适合入门和了解目标检测现状

[TOC](目标检测综述(一份全的自制PPT): 涵盖各种模型简介对比&#xff0c;适合入门和了解目标检测现状) 注&#xff1a;本文仅供学习&#xff0c;未经同意勿转。分享的PPT请勿二次传播&#xff0c;或者用于其他商用途径。若使用本文PPT请注明来源&#xff0c;感谢配合 前言&…

全网超详细的下载与安装VMware虚拟机以及为什么要安装VMware虚拟机

文章目录1. 文章引言2. 下载VMware3. 安装VMware1. 文章引言 我们使用最多的系统是windows系统&#xff0c;因为&#xff0c;国内电脑厂商的操作系统(os)基本是windows系统&#xff0c;比如华为、联想、华硕等电脑。 但线上的服务器大多是Linux系统&#xff0c;而我们经常使用…

numpy 中常用的数据保存、fmt多个参数

在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多 一、保存为二进制文件(.npy/.npz) &#xff08;1&#xff09;numpy.save(file, arr, allow_pickleTrue, fix_importsTrue) file:文件名…

基于微信小程序的生活日用品交易平台 的设计与实现

基于微信小程序的生活日用品交易平台 的设计与实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一…

【信息化知识】

信息化知识 信息化 政务内网需要副省级以上 数据是信息的载体&#xff0c;信息的载体不仅仅只是数据 控制论创始人维纳及信息论的奠基者香农对信息的定义&#xff1a;信息是事物运动状态和状态变化的自我表述 信息化的主体是全体社会成员 信息的质量属性&#xff1a;可验证…

Datawhale统计学习方法打卡Task02

学习教材《统计学习方法&#xff08;第二版&#xff09;》李航 学习内容&#xff1a;第1章 统计学习及监督学习概论 第2章 感知机 感知机&#xff08;perceptron&#xff09;是二类分类的线性分类模型。其输入为实例的特征向量&#xff0c;输出为实例的类别&#xff0c;取1和…

seata源码-全局事务提交 服务端源码

前面的博客中&#xff0c;我们介绍了&#xff0c;发起全局事务时&#xff0c;是如何进行全局事务提交的&#xff0c;这篇博客&#xff0c;主要记录&#xff0c;在seata分布式事务中&#xff0c;全局事务提交的时候&#xff0c;服务端是如何进行处理的 发起全局事务提交操作 事…

时间复杂度(超详解+例题)

全文目录引言如何衡量一个算法的好坏时间复杂度时间复杂度的定义时间复杂度的大O表示法实例test1test2test3test4test5总结引言 如何衡量一个算法的好坏 我们在写算法的时候&#xff0c;对于实现同样的作用的不同算法&#xff0c;我们如何判断这个算法的好坏呢&#xff1f; …

微前端知识点汇总

1、微前端的实现方案 基于 qiankun 的微前端实践 微前端&#xff08;Micro-Frontends&#xff09;是一种类似于微服务的架构&#xff0c;它将微服务的理念应用于浏览器端&#xff0c;即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。 微前端目标直指巨石…

【Kubernetes】【十一】Pod详解 Pod的生命周期

Pod生命周期 我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期&#xff0c;它主要包含下面的过程&#xff1a; pod创建过程 运行初始化容器&#xff08;init container&#xff09;过程 运行主容器&#xff08;main container&#xff09; 容器启动后钩子&#…

陆拾伍- 如何通过数据影响决策

零、为何能影响 客观的表达其实不一定是客观&#xff0c;只要一被展示&#xff0c;就有可能被主观的意愿所影响。 如何通过客观的数据去展示以及放大主观的意愿&#xff0c;主要有以下几种方法&#xff1a; 一、图表内容顺序 原始数据展示 这种展示&#xff0c;对于 A、B店来…

基于微信小程序的青少年生理健康知识小助手

基于微信小程序的青少年生理健康知识小助手 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目…

Python生日系统

#免费源码见文末公众号# 录入生日 def write():keyvar1.get()valuevar2.get()with open(d:\\生日系统.pickle,rb) as file:dictspickle.load(file)dicts[key]valuewith open(d:\\生日系统.pickle,wb) as file:pickle.dump(dicts,file)file.close() 查询生日 def read():namev…

DDR4介绍01

DDR4&#xff08;第四代双倍数据率同步动态随机存储器SDRAM&#xff09; 关于内存方面知识&#xff0c;大部分人、包括我自己也不是很懂&#xff0c;希望此篇文章能起到点作用&#xff0c;做硬件的就得把相关专业知识学牢了&#xff0c;尤其是专业术语。 下面是DDR4知识做一次…

软考高级之信息系统案例分析七重奏-《7》

本文主要介绍信息系统管理师案例分析 项目立项管理 可行性研究内容一般应包括以下内容。 (1)投资必要性 (2)技术的可行性 (3)财务可行性 (4)组织可行性 (5) 经济可行性 (6) 社会可行性 (7) 风险因素及对策。 项目整体管理 1、项目章程应当包括以下内容 (1)项目目的或…

英伟达GPU中的Tnesor Cores数量多寡与显卡性能有什么关联?

前言 最近在调研常用显卡的参数&#xff0c;看到Nvidia Tensor Cores常用于其中作为对比&#xff0c;呈现在性能好的显卡比如A100比RTX 3060更多更全面&#xff0c;开始思考Tensor Cores细致的作用是什么&#xff1f; 英伟达GPU显卡的简要发展历程 GTX是英伟达过去显卡的型号…

智慧工地安全着装识别检测算法 python

智慧工地安全着装识别检测算法通过pythonopencv网络模型AI视频分析技术&#xff0c;人员安全着装识别检测算法对现场物体的不安全状态以及人员的不安全行为&#xff08;不按要求着装&#xff09;进行自动实时分析。由于Python 较为简单&#xff0c;一般无法进行复杂的后端搭建&…