Redis——hash类型详解

news2024/11/19 1:44:02

概述

Redis本身就是键值对结构,而Redis中的value可以是哈希类型,为了区分这两个键值对,Redis中的键值对是key-value,而value中的哈希键值对则是field-value,其中value必须是字符串
在这里插入图片描述
下面介绍一些Redis的hash类型的常用命令

hset

设置对应的key,field,value,返回设置成功的field-value的个数
在这里插入图片描述

hget

返回key下的field对应的value
在这里插入图片描述
演示:

在这里插入图片描述

hexists

返回key下的field是否存在,存在返回1,不存在返回0
在这里插入图片描述
演示:
在这里插入图片描述

hdel

删除hash中的指定字段(del删除的是key,而hdel删除的是field),返回成功删除的个数
在这里插入图片描述
演示:
在这里插入图片描述
如果使用的是del,则key对应的所有hash都会被删除

hkeys

获取hash中全部的field(这个操作会先根据key找到对应的hash,然后再遍历hash)
在这里插入图片描述
演示:
在这里插入图片描述
这个操作实质上相当于keys *,因此如果field过多,会造成Redis服务器被阻塞

hvals

获取hash中全部的value,也有可能造成Redis服务器阻塞
在这里插入图片描述
演示:
在这里插入图片描述

hgetall

获取所有的field和value,每个field和对应的value交替展示
在这里插入图片描述
演示:
在这里插入图片描述

hmget

获取key下指定的field对应的value,value的顺序和给定的field的顺序一致
在这里插入图片描述
演示:
在这里插入图片描述

hlen

获取对应key下hash的元素的个数,时间复杂度O(1)
在这里插入图片描述
演示:
在这里插入图片描述

hsetnx

类似于string类型中的setnx,如果filed不存在则插入hash成功,否则插入失败
在这里插入图片描述
演示:

在这里插入图片描述

hincrby

类似于string类型中的incrby,可以将hash中field对应的value当作整数,进行加减操作
在这里插入图片描述
演示:

在这里插入图片描述

hincrbyfloat

类似于string类型中的incrbyfloat,可以将hash中field对应的value当作小数,进行加减操作
在这里插入图片描述
演示:
在这里插入图片描述

hstrlen

获取value的字符串长度
在这里插入图片描述
演示:
在这里插入图片描述

编码方式

编码方式说明
ziplist压缩列表,当哈希类型元素个数小于512个,所有值小于64字节时使用,更加节省内存
hashtable哈希表,不满足ziplist时使用

压缩的本质是对数据重新编码,结合数据的特点,精妙的设计可以使数据重新编码后缩小体积

而ziplist通过一些压缩算法就可以节省内存空间,但是读写的速度会变慢
在这里插入图片描述

应用场景

缓存

hash类型同样适合作为缓存来存储数据,并且还可以更好的存储结构化的数据
在这里插入图片描述
string类型虽然也能通过json类型存储这样结构化数据,但是如果需要修改数据,需要将整个数据都读出来,修改后再存储回去,显然没有使用hash类型更加轻量化

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

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

相关文章

数据可视化和数字孪生相互促进的关系

数据可视化和数字孪生是当今数字化时代中备受关注的两大领域,它们在不同层面和领域为我们提供了深入洞察和智能决策的机会,随着两种技术的不断融合发展,很多人会将他们联系在一起,本文就带大家浅谈一下二者之间相爱相杀的关系。 …

软件工程模型-架构师之路(四)

软件工程模型 敏捷开发: 个体和交互 胜过 过程和工具、可以工作的软件 胜过 面面俱到的文件、客户合作胜过合同谈判、响应变化 胜过 循序计划。(适应需求变化,积极响应) 敏捷开发与其他结构化方法区别特点:面向人的…

chromedriver、geckodriver、MicrosoftWebDriver、IEDriverServer和operadriver之间的恩怨纠葛

测试环境:操作系统为Windows10-64位 具体目标:安装五大浏览器及其驱动 目录 一、谷歌浏览器1.Google Chrome的安装2.chromedriver的下载 二、火狐浏览器1.Firefox的安装2.geckodriver的下载 三、Edge浏览器1.Microsoft Edge的安装2.MicrosoftWebDriver的…

563.二叉树的坡度(递归)

一、题目 563. 二叉树的坡度 - 力扣(LeetCode) 二、代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …

Spring的简介ioc容器及注入方式

一.Spring的简介 1.Spring的特性 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性…

Shell编程——弱数据类型的脚本语言快速入门指南

目录 Linux Shell 数据类型 变量类型 运算符 算术运算符 赋值运算符 拼接运算符 比较运算符 关系运算符 控制结构 顺序结构 条件分支结构 if 条件语句 case 分支语句 循环结构 for 循环 while 循环 until 循环 break 语句 continue语句 函数 函数定义 …

Matplotlib绘图知识小结--Python数据分析学习

一、Pyplot子库绘制2D图表 1、Matplotlib Pyplot Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。 Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。 Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行…

线上问题排查: jmap mat 工具排查生产环境占用内存过大问题

一. 背景 线上任务内存占用居高不下, 机器load较高. 排查问题原因. 二. 操作 2.1. 工具文件下载清单. mat 工具 linux版本. ( dump文件太大了有20多G, 只能在服务器上解析. 所以下载linux版本. ) 下载地址: https://eclipse.dev/mat/downloads.php 下载高版本的jdk , 目前…

Spark第二课RDD的详解

1.前言 RDD JAVA中的IO 1.小知识点穿插 1. 装饰者设计模式 装饰者设计模式:本身功能不变,扩展功能. 举例: 数据流的读取 一层一层的包装,进而将功能进行进一步的扩展 2.sleep和wait的区别 本质区别是字体不一样,sleep斜体,wait正常 斜体是静态方法…

数学 容斥原理

全都是mn-1&#xff0c;下图都写成m-n-1了&#xff0c;没有脑子o(╥﹏╥)o 题目链接&#xff1a;214. Devu和鲜花 - AcWing题库 #include <bits/stdc.h> #define ll long long using namespace std; const int mod 1e97; ll A[25]; ll Pow(ll a, ll k){ll ans 1;while…

538页21万字数字政府智慧政务大数据云平台项目建设方案WORD

导读&#xff1a;原文《538页21万字数字政府智慧政务大数据云平台项目建设方案WORD》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 根据业务的不同属性&#xff0c…

爱校对:公文材料的新时代伙伴

在这个数字化、智能化日益增强的新时代&#xff0c;公文材料处理方式也在发生着巨大的变化。传统的人工校对方式逐渐被智能化的工具所替代&#xff0c;而在这其中&#xff0c;爱校对正以其卓越的性能和便捷的使用体验&#xff0c;崭露头角&#xff0c;成为公文材料处理的新时代…

利用高级定时器产生PWM

这个图中阐述了利用高级定时器产生PWM的原理&#xff0c;其中 ARR是自动重装载寄存器(TIMx_ARR)的值 CNT是定时器计数器当前的值 CCRx是捕获/比较寄存器 x(TIMx_CCRx)的值 每经过一次定时器时钟周期就会1&#xff0c;通过设置定时器的输出模式&#xff0c;可以实现&#xff0c…

编译工具:CMake(四)|安装目标文件、普通文件、脚本、目录

编译工具&#xff1a;CMake&#xff08;四&#xff09;|安装目标文件、普通文件、脚本、目录 如何安装目标文件的安装普通文件的安装&#xff1a;非目标文件的可执行程序安装(比如脚本之类)目录的安装 如何安装 安装的需要有两种&#xff0c;一种是从代码编译后直接 make inst…

【C++11保姆级教程】新的函数声明(trailing return type)、右值引用(rvalue references)

文章目录 前言一、新的函数声明&#xff08;trailing return type&#xff09;1.1新的函数声明&#xff08;trailing return type&#xff09;概念1.2新的函数声明的使用 二、右值引用&#xff08;rvalue references&#xff09;2.1右值引用&#xff08;rvalue references&…

[机器学习]特征工程:特征降维

特征降维 1、简介 特征降维是指通过减少特征空间中的维度&#xff0c;将高维数据映射到一个低维子空间的过程。 在机器学习和数据分析中&#xff0c;特征降维可以帮助减少数据的复杂性、降低计算成本、提高模型性能和可解释性&#xff0c;以及解决维度灾难等问题。特征降维通…

机器学习知识点总结:什么是EM(最大期望值算法)

什么是EM(最大期望值算法) 在现实生活中&#xff0c;苹果百分百是苹果&#xff0c;梨百分白是梨。 生活中还有很多事物是概率分布&#xff0c;比如有多少人结了婚&#xff0c;又有多少人有工作&#xff0c; 如果我们想要调查人群中吸大麻者的比例呢&#xff1f;敏感问题很难得…

实战项目:基于主从Reactor模型实现高并发服务器

项目完整代码仿mudou库one thread one loop式并发服务器实现: 仿muduo库One Thread One Loop式主从Reactor模型实现⾼并发服务器&#xff1a;通过模拟实现的⾼并发服务器组件&#xff0c;可以简洁快速的完成⼀个⾼性能的服务器搭建。并且&#xff0c;通过组件内提供的不同应⽤层…

更新arm的linux编译工具链

虑到目前arm的gcc 5.5的工具链对C17语法支持不足&#xff0c;需要升级下工具链。 以下是详细步骤。使用官方提供的工具链 ARM官方的工具链网站&#xff1a; https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads bare-metal这个版本就是没有操作系统(裸机环…

如何利用Simulation模拟零件受到的冲击力

线性静力载荷作用过程是恒定的&#xff0c;不随时间变化&#xff1b;单冲击力载荷作用的时间很短&#xff0c;高速高能量&#xff1b;今天给大家分享的是Simulation怎么模拟零件受到冲击力。 DEMO案例介绍&#xff1a;板材规格250X120X10&#xff0c;在板材的中心Φ5的区域受冲…