Redis初识第四期----Hash的命令和应用场景

首先为了区分Redis的键值对存储的key-value,Hash中的键值对称为field-value。

命令

1.Hset

Hset key field value [field value]

返回值为设置成功的field-value的个数。

2.Hget

Hget key field 

返回为value

3.Hexists

Hexists key field

判断是否存在:返回1表示存在,0表示不存在。

4.Hdel

Hdel key field [field....]

删除Hash中指定的字段,返回类型为删除的字段个数。

注意区分Hdel和del:

Hdel是删除的field,而del则是将整个Key都删除。

5.Heys

Hkeys key

获取Hash中所有的字段,是一个比较危险的操作,类似于Keys*,可能会引起服务器阻塞。

6.Hvals

Hvals key

获取Hash中所有的values。(也可能有危险,尤其是values特别多时)

7.Hgetall

Hgetall key

获取Hash中所有的field 和 values(危险操作)

8.HMget

类似于Mget,可以一次查询多个field 。

语法:HMget key f1,f2....

其次Hash中也有HMset,但是由于Hset已经可以一次设置多个了,所以HMset也没什么必要了。

上述操作中的Hkeys,Hgetall,Hvals都是具有一定风险的操作,当元素过多时,可能会阻塞服务器,为了避免这种情况,我们可以使用“渐进式”遍历式操作“scan”,将这些操作“化整为零“。scan操作会在之后文章中介绍。

9.Hlen

Hlen  key

获取Hash中所有字段的个数。注意时间复杂度为O(1)级别(不用遍历)

10.Hset  NX

HSETNX key field value

当字段不存在时才能设置成功。

11.HIncrby

对value可以加减整数。

12.HIncrbyFloat

对valuue加减小数。

这两个操作在操作时,是先将value转为对应的格式(int,double),处理好后再转为String格式存进去。

Hash内部编码

1.ziplist

采用一定的算法对数据进行压缩操作,让空间更加紧凑,节省内存空间,代价就是进行读写的速度会比较慢,适合于元素个数较少,元素长度较短的情况。

2.HashTable

当元素不适用于ziplist时,就会转化为HashTable。具体什么时候开始转化,可以在Redis中的配置文件中来手动配置。

Hash使用场景

主要是通过hash来存Mysql中的表

比如说,可以将key设置为user1,field为name,value为20,这样就将user的name属性存好了,也可以设置多个hash,分别存Id,age等。

其次String类型也可以通过设置为Json类型来存数据库中的数据,但是如果修改的话就不如Hash方便,因为需要将整个Json都取出来再修改。而Hash可以直接通过修改对应field的value来修改。

但是Hash也有缺点,尤其当内部编码为HashTable时,空间浪费现象比较严重。主要原因为以下几点:

  • 指针开销:HashTable 中的每个键值对都需要额外的指针来链接
  • 内存对齐:HashTable 中的节点需要按照一定的字节边界对齐,导致内存碎片
  • 哈希表结构开销:HashTable 需要维护哈希桶、链表等结构
  • 空间预分配:为了避免频繁扩容,Redis 会预分配更多的空间

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

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

相关文章

【大数据技术栈】数据管理范畴常用大数据技术栈

一、技术栈分层架构 大数据技术栈通常分为四个核心层级: 数据采集层 负责多源异构数据的实时/批量采集 日志采集: F l u m e Flume Flume、 L o g s t a s h Logstash Logstash消息队列: K a f k a Kafka Kafka、 R a b b i t M Q RabbitMQ …

安全左移(Shift Left Security):软件安全的演进之路

文章目录 一、背景:传统安全的尴尬处境二、安全左移:让安全成为开发的“第一等公民”三、安全左移的关键实施阶段1. 需求阶段:嵌入安全需求建模2. 设计阶段:威胁建模与架构审计3. 编码阶段:安全编码规范与静态分析4. 构…

固定债可以卖call吗

我们都知道如果持有tlt,可以卖call来赚取时间价值,如果我买固定到期的美债而不是etf,有类似的操作吗,我可以卖call吗 以下是关于直接持有固定到期美债并尝试卖出看涨期权的详细分析: 一、直接持有美债与ETF&#xff08…

fish安装node.js环境

为什么强调fish shell,因为fish shell的缘故,不能直接执行node.js官网的命令 好的,您遇到了一个非常典型且重要的问题。请仔细阅读我的分析,这能帮您彻底解决问题。 问题诊断 您看到的所有错误,归根结底有两个核心原…

记一次Ubuntu22安装MongoDB8并同步本地数据过程

1. 效果展示 2. 安装MongoDB 8 根据官方文档https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-ubuntu/一顿操作即可 2.1 配置微调支持远程访问 修改配置文件,默认/etc/mongod.conf # network interfaces net:port: 27017bindIp: 0.0.0.02.2 新增adm…

HarmonyOS应用开发高级认证知识点梳理 (三)状态管理V2装饰器核心规则

以下是针对HarmonyOS应用开发高级认证备考的‌状态管理V2装饰器核心规则‌知识点系统梳理: 一、核心装饰器分类与功能 1. ‌组件声明装饰器‌ ComponentV2‌ (1)基础定义与限制 功能定位‌ 用于装饰自定义组件,启用V2状态管理能力,需配…

SAP资产记账相关业务成本中心为空的问题

用户在资产记账时,发现字段“成本中心”是空且为灰色的,并没有显示资产对应的成本中心,如下图所示: 首先,关于资产购置记账的相关业务,成本中心要不要显示?其实是可以不显示的,它是来…

智源大会AI安全论坛:深挖风险红线,探讨应对措施

6月7日,在与安远AI联合主办的智源大会“AI安全论坛”上,来自MIT、清华、复旦、人大、智源、多伦多大学、新加坡管理大学、Redwood Research、瑞莱智慧和安远AI 的学者与技术专家同台,以“AI安全”为核心议题,从主旨报告&#xff0…

电机控制的一些笔记

1. 电角度和机械角度 电角度 机械角度 * 磁极对数 机械角度就是实际的空间几何角度,范围是0-360 https://blog.csdn.net/leekay123/article/details/108655482 https://www.bilibili.com/video/BV11Q4y1Y7kR/?spm_id_from333.788.recommend_more_video.1&vd…

c#手动编译

一、配置环境变量 点击环境变量,在用户变量的path进行新建,点击编辑 点击新建 点击新建 添加文件目录 这是我的可能不一样,C:\Windows\Microsoft.NET\Framework64\v4.0.30319 输入 点击确定,就可以了 二、建立cs文件 代码实例…

pcap流量包分析工具设计

在复杂的网络世界中,数据包是信息的载体,但也可能成为风险的源头。无论是开发者调试接口,还是安全人员排查异常,都需要一个能够看透数据本质的“眼睛”。然而,专业的网络分析工具往往过于复杂,不适合快速定…

Qt 安装与项目创建

一、Qt 介绍 1. Qt是什么? Qt是一个跨平台的 C 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CU…

基于注意力机制的方法预测的体重

我们有一些已知的身高(作为键 K K K)和对应的体重(作为值 V V V)。现在,我们想使用一种基于注意力机制的方法来“查询”一个特定身高(比如 170cm)对应的体重。虽然这通常不是注意力机制的典型…

Modbus TCP 进阶:基于以太网的远程设备控制(一)

Modbus TCP 基础回顾 ** 在工业自动化领域,Modbus TCP 是一种广泛应用的通信协议,它基于以太网,为设备之间的通信搭建了桥梁,实现了远程设备的高效控制。Modbus TCP 是 Modbus 协议家族中的一员,它在传统 Modbus 协议…

linux魔术字定位踩内存总结

0,数据被改写时我们需要怎么定位,我们首先需要确认数据是逻辑上被改写还是踩内存被改写的。 1,当数据被踩时,也就是出现数据异常时,并且可以稳定复现时,我们确认时踩固定内存时,我们可以使用魔术字定位问题。 代码举例查看确认。 #include <stdio.h> #include…

浅谈Docker Kicks in的应用

正因为传统部署的麻烦&#xff0c;我们希望减少整个安装过程&#xff0c;将其简单化&#xff0c;以下介绍两个思路&#xff1a; 思路一&#xff1a;安装 Docker 后安装 Ghost&#xff0c;并且直接暴露 80 端口&#xff0c;此时所有请求由 Docker 内的 Express 服务器处理&…

【Rust + Actix Web】现代后端开发:从零构建高并发 Web 应用

目录 项目概述环境准备项目创建与依赖配置系统架构设计核心代码实现1. 数据库模型 (src/models.rs)2. 应用状态管理 (src/state.rs)3. 核心业务逻辑 (src/handlers.rs)4. 主应用入口 (src/main.rs) 高并发优化策略1. 异步处理模型2. 连接池配置优化3. 缓存策略设计 性能测试结果…

2025java面试题整理通俗易懂好记

一、Java 基础 1. JVM 相关 Q&#xff1a;什么情况下会发生栈内存溢出&#xff1f; A&#xff1a;就像食堂打饭窗口前排队&#xff0c;队伍太长&#xff08;方法调用层级太深&#xff09;&#xff0c;或者每个人占的位置太大&#xff08;局部变量太多&#xff09;&#xff0c;…

内存分配算法(系统分配算法~应用常见算法)

一、内存碎片 内部碎片与外部碎片 内部碎片&#xff1a;指已分配给进程但未被实际利用的内存空间&#xff0c;属于​​已分配内存内部的浪费​​。 外部碎片&#xff1a;内存中​​零散分布的空闲小空间​​&#xff0c;总量足够但无法合并为大块以满足连续内存请求。 内部碎…

缓解停车难的城市密码:4G地磁检测器如何重构车位资源分配

城市停车难&#xff0c;是困扰车主和管理者的双重痛点。寻找车位耗时耗力&#xff0c;人工计时收费易生纠纷&#xff0c;传统管理模式效率低下。而 4G地磁检测器 的出现&#xff0c;正悄然改变这一局面。它如同埋入城市道路的“感知神经元”&#xff0c;通过4G地磁检测器 的精准…