Redis(哈希Hash和发布订阅模式)

news2024/10/5 23:31:06

哈希是一个字符类型字段和值的映射表。

在Redis中,哈希是一种数据结构,用于存储键值对的集合。哈希可以理解为一个键值对的集合,其中每个键都对应一个值。哈希在Redis中的作用主要有以下几点:

1. 存储对象:哈希可以用来存储对象的属性和值,例如存储用户信息、商品信息等。这样可以将一个对象的多个属性存储在一个键下,方便管理和查询。

2. 高效存储和访问:哈希在Redis中使用了一种高效的数据结构,可以快速地存储和访问键值对。这样可以提高数据的读写效率,特别适用于需要频繁读写的场景。

3. 结构化存储:哈希可以帮助将数据进行结构化存储,使得数据更加清晰和易于管理。通过哈希可以实现多维数据的存储和查询,满足复杂数据结构的需求。

总之,哈希在Redis中的作用是用来存储和管理键值对的集合,提高数据的存储和访问效率,实现数据的结构化存储。

Hash当中的命令都是以H开头。

可以使用HSET添加键值对,使用HGET获取键值对,当然也可以使用HGETALL获取所有键值对。

注意上方返回键值对,第一个是键,第二个是值。所以返回的是两个键值对。

使用HDEL删除键值对,HEXISTS判断键值对是否存在。返回1表示存在,返回0表示不存在。

使用HKEYS获取哈希中的键,HLEN获取哈希中的键值对数量。 

发布订阅:

在Redis中,发布消息是通过发布/订阅模式实现的。发布/订阅模式是一种消息传递模式,它包括两个主要的角色:发布者和订阅者。发布者将消息发布到一个频道(channel)中,而订阅者可以订阅这个频道,接收发布者发送的消息。

在Redis中,发布消息的命令是PUBLISH,它的语法如下:

PUBLISH channel message

其中,channel表示频道的名称,message表示要发布的消息内容。例如,我们可以通过以下命令向名为“news”的频道发布一条消息:

PUBLISH news "Hello, World!"

当有订阅者订阅了“news”频道时,就会收到这条消息。订阅者可以使用SUBSCRIBE命令来订阅一个或多个频道,例如:

SUBSCRIBE news

这样,当有消息发布到“news”频道时,订阅者就会收到这条消息。如果订阅者想要取消订阅,可以使用UNSUBSCRIBE命令,例如:

UNSUBSCRIBE news

这样就可以取消对“news”频道的订阅了。

使用SUBSCRIBE来订阅频道,PUBLISH来发布消息。

 

注意第一张图的消息,也就是1下面的输出都是在发布消息后产生的,发布了一个叫Redis的消息到geekhour频道。

当有多个用户订阅的该频道,那么当发布消息的时候,所以订阅该频道的用户都会收到消息。

发布消息的局限性:消息无法持久化、无法记录历史消息等,可以使用Stream流来解决这些问题。

 

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

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

相关文章

计算机视觉:驾驶员疲劳检测

目录 前言 关键点讲解 代码详解 结果展示 改进方向(打哈欠检测疲劳方法) 改进方向(点头检测疲劳) GUI界面设计展示 前言 上次博客我们讲到了如何定位人脸,并且在人脸上进行关键点定位。其中包括5点定位和68点定…

《洛谷深入浅出基础篇》——P3405 citis and state ——哈希表

上链接:P3405 [USACO16DEC] Cities and States S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3405 上题干: 题目描述 Farmer John 有若干头奶牛。为了训练奶牛们的智力,Farmer John 在谷仓的墙上放了一…

UE5 - ArchvizExplorer - 数字孪生城市模板 -学习笔记

1、学习资料 https://www.unrealengine.com/marketplace/zh-CN/product/archviz-explorer https://karldetroit.com/archviz-explorer-documentation/ 官网下载的是一个简单版,需要下载扩展,并拷贝到项目录下,才有完整版 https://drive.googl…

Vatee万腾的科技征程:Vatee数字化创新的前沿探讨

在Vatee万腾的科技征程中,我们目睹了一场数字化创新的引领之旅,探讨了Vatee在科技前沿的独到见解。Vatee万腾不仅仅是一家科技公司,更是一支前行不辍的冒险队伍,通过不断突破自我,探索未知领域,引领着数字化…

TableUtilCache:针对CSV表格进行的缓存

TableUtilCache:针对CSV表格进行的缓存 文件结构 首先来看下CSV文件的结构,如下图: 第一行是字段类型,第二行是字段名字;再往下是数据。每个元素之间都是使用逗号分隔。 看一下缓存里面存储所有表数据的字段 如下图&#xff…

《向量数据库指南》——TruLens + Milvus Cloud构建RAG深入了解性能

深入了解性能 索引类型 本例中,索引类型对查询速度、token 用量或评估没有明显影响。这可能是因为数据量较小的关系。索引类型对较大语料库可能更重要。 Embedding 模型 text-embedding-ada-002 在准确性(0.72,平均 0.60)和答案相关度(0.82,平均0.62)上优于 MiniLM Embeddin…

wpf devexpress 开始点

此教程示范如何创建registration form和DevExpress WPF Data Editors 开始点 此项目源码 这个解决方案包含几个项目-每一个项目对应一个教程 RegistrationForm.BaseProject项目是基于工作的解决方案。项目包含三个视图:MainView,RegistraionView&…

正版软件|Kaspersky 杀毒软件 - 全方位安全软件

卡巴斯基 全方位安全软件 一款产品满足 您的全部安全需求, 通过屡获殊荣的保护产品抵御黑客、病毒和恶意软件,获得无与伦比的安全感。此外还有支付保护和隐私保护工具,为您提供全方位保护。包含高级版功能: 免费 Kaspersky Safe …

Git企业开发级讲解(三)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、版本回退1、内容2、演示 二、撤销修改1、情况⼀:对于⼯作区的代码&#xff0c…

GEM5 Garnet DVFS / NoC DVFS教程:ruby.clk_domain ruby.voltage_domain

简介 gem5中的 NoC部分是Garnet实现的,但是Garnet并没有单独的时钟域,而是保持ruby一致,要做noc的DVFS,便是要改ruby的 改电压 #这里只是生成一个随便变量名,存一下值。改是和频率一起的 userssaved_voltage_domain…

【MyBatis】写了 10 年的代码,我最怕写 MyBatis 这些配置,现在有详解了

在使用 mybatis 过程中,当手写 JavaBean和XML 写的越来越多的时候,就越来越容意出错。这种重复性的工作,我们当然不希望做那么多。 还好, mybatis 为我们提供了强大的代码生成--MybatisGenerator。 通过简单的配置,我们…

新版JetBrains ToolBox【Windows】修改应用安装位置

WIndows下新版的JetBrainse ToolBox 无法修改应用安装路径 关闭 ToolBox 应用修改配置文件.settings.json 路径:C:\Users\用户名\AppData\Local\JetBrains\Toolbox "install_location": "xxx",

早晨暖心的早安问候语,祝好心情从清晨开始,愿你享受美好生活每一天!

1、冬天里,重调理;多锻炼,日光浴;早安睡,晚游历;勤开窗,通空气;暖腹背,寒不欺;适滋补,强体力;心乐观,无忧虑;温…

LTD.com再度荣获“2023中国产业数字化技术赋能先锋”

2023年11月17日,由托比网主办的“第十届中国产业数字化大会”在江苏南京顺利召开。作为国内产业数字化领域的年度盛会,会议得到了江苏省商务厅、南京市政府的支持,由南京市商务局主办,南京鼓楼区政府提供特别支持。 会议在精彩的议…

vite+vue3+ts中watch和watchEffct的使用

vitevue3ts中watch和watchEffct的使用 本文目录 vitevue3ts中watch和watchEffct的使用watchrefreactivepropsimmediate组合监听 watchEffect单值多值侦听副作用停止监听 watch vue官方文档:https://cn.vuejs.org/api/reactivity-core.html#watch 可以监听基础类型&…

使用Docker部署Python Flask应用的完整教程

一、引言 Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包成一个独立的容器,实现快速部署和跨平台运行。本文将详细介绍如何使用Docker来部署Python Flask应用程序,帮助开发者更高效地构建和部署应用。 二、准备工作 在开始之前…

Linux CentOS 8(DHCP的配置与管理)

Linux CentOS 8(DHCP的配置与管理) 目录 一、项目介绍二、DHCP服务简介三、DHCP工作原理四、配置DHCP服务4.1 项目配置准备4.2 dhcpd配置文件框架与参数说明4.3 登录客户机验证4.4 客户端IP地址的释放与重新申请4.5 保留特定IP地址 一、项目介绍 当计算…

【C++】容器string的构造函数和迭代器

目录 1 什么是string 2 迭代器 2.1 迭代器的使用 2.2 auto关键字以及代码可读性 3 构造函数 1 什么是string 上图是C官网对于string的解释:string是表示字符序列的对象。 string本质是一个类,位于std的命名空间下,使用前需要包含头文件…

基于乌燕鸥算法优化概率神经网络PNN的分类预测 - 附代码

基于乌燕鸥算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于乌燕鸥算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于乌燕鸥优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

安全知识普及:什么是垃圾邮件和网络钓鱼欺诈

文章目录 什么是垃圾邮件?如何保护您自己免遭垃圾电子邮件和网络钓鱼侵害区分私人和公用电子邮件私人电子邮件公共电子邮件 使用反垃圾邮件过滤器推荐阅读 什么是垃圾邮件? 您的邮箱里经常会出现一些莫名其妙的邮件,而这就是电子形式的垃圾邮…