《程序猿之Redis缓存实战 · 哈希类型》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗

🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

文章目录

    • 哈希(Hash)

哈希(Hash)

【结构简介】

1、Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构。

2、Redis 中 的 Hash 是一个 String 类型的 field-value(键值对) 的映射表,特别适合用于存储对象,我们也可以直接修改对象中的某些字段值。

【补充:与String比较】

String 结构如果 Value 要存储对象,可以将对象序列化为JSON字符串后存储。当我们要修改对象的某个属性值的时候很不方便,必须取出来,转换JSON对象,修改了,再存进去,或者直接整个覆盖。

Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD。

【应用场景】

1、对象数据存储

举例:用户信息、商品信息、文章信息。

命令:HSET(设置一个/多个字段的值)、HGET(获取单个字段的值)、HMGET(获取多个字段的值)。

点评:如果从数据库查到的实体对象,作为缓存查询,又较少修改的话,直接String类可能更合适。

2、购物车功能

命令:HSET (加购)、HINCR(加数量)、HLEN(获取数量)、HDEL(删除商品)、HGETALL(获取商品)。

点评:算是一个特定场景,购物车的数据也不是很重要,放缓存也合适。

3、双Key的场景

举例:文章的用户评论,某个文章ID作为Key,用户ID作为H-Key,评论内容作为H-Value。

点评:实战中更经常是这类型使用哈希,还是挺多适用的。

【基本指令】

HSET key field value:将哈希表key中的字段field的值设为value
HMSET key field1 value1 [ field2 value2 ]:同时将多个field-value(域-值)对设置到哈希表key中
HVALS key:获取哈希表中所有的值
HDEL key field2 [ field2 ]:删除一个或者多个哈希表字段
HEXISTS key field:查看哈希表中key,指定的字段是否存在
HGETALL key:获取在哈希表中指定key的所有字段和值
----------
HSET key field value	添加或者修改hash类型key的field的值
HGET key field	获取一个hash类型key的field的值
HMSET	批量添加多个hash类型key的field的值
HMGET	批量获取多个hash类型key的field的值
HGETALL	获取一个hash类型的key中的所有的field和value
HKEYS	获取一个hash类型的key中的所有的field
HINCRBY	让一个hash类型key的字段值自增并指定步长
HSETNX	添加一个hash类型的key的field值,前提是这个field不存在,否则不执行
● HVALS key:获取哈希表中所有的值
● HSET key field value:将哈希表key中的字段field的值设为value
● HGET key field:获取存储在哈希表中指定字段的值
● HSETNX key field value:只有在字段field不存在时,设置哈希表字段的值
● HDEL key field2 [ field2 ]:删除一个或者多个哈希表字段
● HEXISTS key field:查看哈希表中key,指定的字段是否存在
● HGETALL key:获取在哈希表中指定key的所有字段和值---------------------------------------------------分隔线---------------------------------------------------
● HINCRBY key field increment:为哈希表key中指定字段的整数值添加上增量increment
● HKEYS:获取所有哈希表中的字段
● HLEN key:获取哈希表中字段的数量
● HMGET key field1 [ field2 ]:获取所有给定字段的值
● HMSET key field1 value1 [ field2 value2 ]:同时将多个field-value(域-值)对设置到哈希表key中
● HSCAN key cursor [ MATCH pattem ] [ COUNT count ]:迭代哈希表中的键值对
● HINCRBYFLOAT key field increment:为哈希表key中指定字段的浮点数值添加上增量increment

【代码示例】

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

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

相关文章

阿里rtc云端录制TypeScript版NODE运行

阿里云音视频服务云端录制typescript版本; 编译后可以使用 node index.js运行 package.json 版本 // npm install --save alicloud/rtc201801112.3.0 "alicloud/rtc20180111": "^2.3.0",引入 import Client, { StartCloudRecordRequest, StopCloudRecord…

基于Python大数据的音乐推荐及数据分析可视化系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

速盾:cdn加速什么好

CDN加速是一种通过在全球范围内部署服务器节点,以提供更快速、稳定的内容传输服务的技术。CDN技术在互联网发展中起到了重要的作用,对于改善网站性能、提高用户体验具有重要的意义。下面将从几个方面介绍CDN加速的好处。 首先,CDN加速可以提…

python股票因子,交易所服务器宕机,量化交易程序怎么应对

炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…

page-break系列属性与分页的控制

CSS中的page-break系列属性主要用于控制打印文档时的分页行为。这些属性包括page-break-before、page-break-after和page-break-inside,它们允许开发者指定在哪些元素之前、之后或内部应该插入分页符,以优化打印文档的布局和可读性。 1. page-break-bef…

简易CPU设计入门:取指令(三),ip_buf与rd_en的非阻塞赋值

在开篇,还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后&…

jetlinks物联网平台学习4:http协议设备接入

http协议设备接入 1、创建产品2、配置设备接入方式3、配置网络组件4、上传消息协议5、填写网关信息6、配置http认证信息7、配置物模型8、创建设备9、使用apiPost模拟设备接入9.1、设备上线9.2、设备上报属性9.3、设备事件上报 1、创建产品 创建产品 2、配置设备接入方式 点击…

自定义 CSS 和 t-att-class 的使用

一、创建css文件 <model_name>\static\src\scss\custom.css .color_loss_red {color: red !important; }二、声明css文件 __manifest__.py assets: {web.assets_backend: [...<model_name>/static/src/scss/custom.css,]},三、引用自定义的css文件 views.xml …

物联网行业中模组的AT指令详解以及使用

01 概述 AT 命令&#xff08;AT Commands&#xff09;最早是由发明拨号调制解调器&#xff08;MODEM&#xff09;的贺氏公司&#xff08;Hayes&#xff09;为了控制 MODEM 而发明的控制协议。后来随着网络带宽的升级&#xff0c;速度很低的拨号 MODEM 基本退出一般使用市场&am…

Vue3 路由传参:玩转 params,让页面交互更流畅!

嘿&#xff0c;小伙伴们&#xff01;今天给大家带来的是Vue3中使用params进行路由传参的小技巧。不管是新手小白还是进阶玩家&#xff0c;这篇文章都会让你对Vue3的路由管理有更深的理解。废话不多说&#xff0c;直接进入实战演练&#xff01;&#x1f389; &#x1f50d; 为什…

Android 已经过时的方法用什么新方法替代?

过时修正举例 (Kotlin): getColor(): resources.getColor(R.color.white) //已过时// 修正后:ContextCompat.getColor(this, R.color.white) getDrawable(): resources.getDrawable(R.mipmap.test) //已过时//修正后:ContextCompat.getDrawable(this, R.mipmap.test) //…

三元祖表的定义

三元组在数据结构中主要用于表示稀疏矩阵和图等结构中的数据&#xff0c;其作用在于节省存储空间和提高计算效率。 1. 稀疏矩阵: 稀疏矩阵是指矩阵中大部分元素为零的矩阵。如果直接存储整个矩阵&#xff0c;会浪费大量的存储空间。而使用三元组表示法&#xff0c;可以只存储…

[深度学习]卷积神经网络CNN

1 图像基础知识 import numpy as np import matplotlib.pyplot as plt # 图像数据 #imgnp.zeros((200,200,3)) imgnp.full((200,200,3),255) # 可视化 plt.imshow(img) plt.show() # 图像读取 imgplt.imread(img.jpg) plt.imshow(img) plt.show() 2 CNN概述 卷积层convrelu池…

技术速递|加入 .NET 智能组件生态系统

作者&#xff1a;Daniel Roth - 首席产品经理 排版&#xff1a;Alan Wang .NET 智能组件是一组示例嵌入式 UI 组件&#xff0c;使得在应用中轻松添加 AI 启用的功能变得更加简单&#xff0c;例如从剪贴板数据自动填写表单、智能文本补全以及语义搜索等场景。.NET 智能组件演示了…

用友U8 CRM 多个接口存在SQL注入漏洞

本文所涉及的任何技术、信息或工具&#xff0c;仅供学习和参考之用&#xff0c;请勿将文章内的相关技术用于非法目的&#xff0c;如有相关非法行为与文章作者无关。请遵守《中华人民共和国网络安全法》。 中华人民共和国网络安全法 第二十七条 规定 任何个人和组织不得从事非…

uniapp 知识点

自定义导航 在page.json navigationstyle":"custom"navigateTo传参 页面传参只能onLoad(option)里面拿 px和upx的关系 在750设计图中&#xff0c;1px1upx 路由 navigateBack返回上一页 重定向 其实就是把当前页面干掉了 公共组件和页面共同点 computed,watc…

C++精简基础(一)

C精简基础 文章目录 前言一、第一个C程序1.1 第一个项目1.2 编程练习1.3 变量 二、数据类型2.1 整型 int2.2 字符类型 char2.3 布尔类型 bool2.5 浮点类型 float、double 总结 前言 本篇笔记重点描述C的初级基础知识。 一、第一个C程序 1.1 第一个项目 C是在C语言的基础上发展…

Unity中的功能解释(数学位置相关和事件)

向量计算 Vector3.Slerp&#xff08;起点坐标&#xff0c;终点坐标&#xff0c;t&#xff09;&#xff0c;可是从起点坐标以一个圆形轨迹到终点坐标&#xff0c;有那么多条轨迹&#xff0c;那怎么办 Vector3.Slerp 进行的是沿球面插值&#xff0c;因此并不是沿着严格的“圆形…

【笔记】自动驾驶预测与决策规划_Part4_时空联合规划

文章目录 0. 前言1. 时空联合规划的基本概念1.1 时空分离方法1.2 时空联合方法 2.基于搜索的时空联合规划 &#xff08;Hybrid A* &#xff09;2.1 基于Hybrid A* 的时空联合规划建模2.2 构建三维时空联合地图2.3 基于Hybrid A*的时空节点扩展2.4 Hybrid A* &#xff1a;时空节…

- 串口通信

USART串口通信 目录 USART串口通信 回顾 USART串口通信 1、通信分类与作用 2、串口通信的相关参数&#xff08;重点&#xff09; 3、位协议层 -- RS232协议 4、STM32F103 中的串口外设 5、调试串口编程 -- &#xff08;1&#xff09;串口初始化&#xff1a;时钟、IO、…