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

news2024/9/30 13:01:42

📢 大家好,我是 【战神刘玉栋】,有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.coloradmin.cn/o/2179685.html

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

相关文章

《ToDesk 云电脑、易腾云、青椒云移动端体验实测:让手机秒变超级电脑》

前言 科技发展到如今2024年,可以说每一年都在发生翻天覆地的变化。云电脑这个市场近年来迅速发展,无需购买和维护额外的硬件就可以体验到电脑端顶配的性能和体验,并且移动端也可以带来非凡体验。我们在外出办公随身没有携带电脑情况下&#x…

聊一聊大模型六小虎生存现状!

ChatGPT横空出世,打响了生成式AI创业热潮的发令枪。 在国内,智谱AI、百川智能、零一万物、月之暗面、Minimax率先领跑。今年6月,前微软全球副总裁姜大昕创办的阶跃星辰,开始受到资本的青睐,一轮20亿美元的融资&#x…

服务器使用frp做内网穿透详细教程,请码住

目录 1.内网穿透的定义 2.前提条件 3.frp下载地址 4.配置服务器端的frps.toml文件 5. 配置客户端,即物理服务器或者是电脑本机地址 6.添加服务端启动命令startServerFrp.sh 7.添加客户端启动命令startClientFrp.sh 8. 查看服务端启动日志 9.查看客户端启…

HTML+CSS - 表单交互(一)

1. 前言 ​​​​​​​ Web 表单是用于和用户交互的强大工具——其常用于收集用户数据和控制用户界面。 web 表单是用户和 web 站点或应用程序之间交互的主要内容之一。它们允许用户输入数据,大多数情况下会将数据发送到 web 服务器进行处理和存储 2. form标签 …

数据飞轮赋能科学决策:火山引擎 DataTester 升级 A/B 大模型评测

在数字化浪潮的推动下,企业数据化转型已成为不可逆转的时代趋势。随着企业对数据价值认知的深化,从优化数据管理到内部数据普惠,再到数据资产价值的充分挖掘,数据产品需求呈现爆发式增长。作为推动企业数智化升级的新范式&#xf…

数造科技入选中国信通院《高质量数字化转型产品及服务全景图》三大板块

9月24日,2024大模型数字生态发展大会暨“铸基计划”年中会议在北京召开。会上,中国信通院发布了2024年《高质量数字化转型产品及服务全景图(上半年度)》和《高质量数字化转型技术解决方案(上半年度)》等多项…

解决银河麒麟操作系统“/dev/root does not exist”错误的快速方法

解决银河麒麟操作系统“/dev/root does not exist”错误的快速方法 1、步骤2、注意 💖The Begin💖点点关注,收藏不迷路💖 在安装系统时遇到“/dev/root does not exist”错误,通常是因为引导程序未正确设置启动设备。以…

golang学习笔记27-反射【重要】

本节也是GO核心部分,很重要。包括基本类型的反射,结构体类型的反射,类别方法Kind(),修改变量的值。 目录 一、概念,基本类型的反射二、结构体类型的反射三、类别方法Kind()四、修改变量的值 一、概念,基本…

Linux云计算 |【第四阶段】RDBMS1-DAY3

主要内容: 子查询(单行单列、多行单列、单行多列、多行多列)、分页查询limit、联合查询union、插入语句、修改语句、删除语句 一、子查询 子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一…

STM32 OLED

文章目录 前言一、OLED是什么?二、使用步骤1.复制 OLED.C .H文件1.1 遇到问题 2.统一风格3.主函数引用头文件3.1 oled.h 提供了什么函数 4.介绍显示一个字符的函数5. 显示十进制函数的讲解 三、使用注意事项3.1 配置符合自己的引脚3.2 花屏总结 前言 提示&#xff…

第L2周:机器学习|线性回归模型 LinearRegression:2. 多元线性回归模型

本文为365天深度学习训练营 中的学习记录博客原作者:K同学啊 任务: ●1. 学习本文的多元线形回归模型。 ●2. 参考文本预测花瓣宽度的方法,选用其他三个变量来预测花瓣长度。 一、多元线性回归 简单线性回归:影响 Y 的因素唯一&…

python15_转换为ASCII

转换为ASCII A A B 你好 C 66def str_to_ascii(s):# 如果输入是单个字符,直接返回其ASCII值if len(s) 1:return ord(s)# 否则返回每个字符的ASCII值列表return [ord(char) for char in s]def int_to_ascii(i):# 将整数转换为对应的ASCII字符return chr(i)if __…

气膜仓库出售:智能高效的新选择—轻空间

随着现代物流和仓储需求的不断增长,传统仓库模式已经难以满足市场的多样化需求。气膜仓库凭借其灵活性、高效性和智能化的特点,成为仓储领域的新宠,而现在,我们推出了全新方向——气膜仓库出售,为企业提供更加灵活的资…

hex 文件和 bin 文件剖析

目录 一、概述二、hex 文件三、bin 文件 在单片机开发中,hex 文件和 bin 文件是非常常见的两种烧写文件格式。比如在 Keil 中,编译好程序后,点击 Download 就可以把 hex 文件烧录到板子上。 而有时候在我们实现 IAP 时,有需要生成…

《动手学深度学习》笔记2.5——神经网络从基础→使用GPU (CUDA-单卡-多卡-张量操作)

目录 0. 前言 原书正文 1. 计算设备 (CPU和GPU) 补充:torch版本cuda报错的解决方案 2. 张量与GPU 3. 存储在GPU上 4. 复制(多卡操作) 5. 旁注 (CPU和GPU之间挪数据) 6. 神经网络与GPU 小结 0. 前言 课程全部代码(pytorc…

Linux进程终止进程等待进程程序替换

目录 一、进程终止 1.1进程退出的场景 1.2进程常见的退出方法 ​1.3多进程的退出 ​1.4exit( )和_exit( ) 二、进程等待 2.1进程等待的必要性 2.2进程等待的方式 2.3获取子进程的statue 2.4非阻塞轮询 2.5进程等待的底层原理 三、进程程序替换 3.1单进程程序替换 …

踩坑Resilience4j @Bulkhead

先说问题情况 系统环境 java version: 17spring boot: 3.xspring cloud: 4.x 项目配置和代码 项目中使用了Spring Cloud Circuit Breaker <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-circuitbre…

Android 简单实现联系人列表+字母索引联动效果

效果如上图。 Main Ideas 左右两个列表左列表展示人员数据&#xff0c;含有姓氏首字母的 header item右列表是一个全由姓氏首字母组成的索引列表&#xff0c;点击某个item&#xff0c;展示一个气泡组件(它会自动延时关闭)&#xff0c; 左列表滚动并显示与点击的索引列表item …

Solidity智能合约调用其他合约的三种主要方式

在 Solidity 中&#xff0c;智能合约之间的交互非常重要。调用其他合约的功能可以增强合约的灵活性&#xff0c;使其能够执行跨合约操作&#xff0c;比如获取数据、转移资金或触发其他合约的功能。本文将详细介绍 Solidity 中调用其他合约的不同方式及其应用场景。 1. 合约间调…

【Unity踩坑】Unity更新Google Play结算库

一、问题描述&#xff1a; 在Google Play上提交了app bundle后&#xff0c;提示如下错误。 我使用的是Unity 2022.01.20f1&#xff0c;看来用的Play结算库版本是4.0 查了一下文档&#xff0c;Google Play结算库的维护周期是两年。现在需要更新到至少6.0。 二、更新过程 1. 下…