深入剖析Redis系列- Redis数据结构之哈希

news2024/12/23 17:37:00

1.11.5哈希类型(hash)
Redis的hash 是一个string类型的key和value的映射表,这里的value是一系列的键值对,hash特别适合用于存储对象。
哈希类型的数据操作总的思想是通过key和field操作value,key是数据标识,field是域,value是我们感
兴趣的业务数据。

1.11.5.1hset
语法:hset key field value [field value …]
功能:将键值对field-value设置到哈希列表key中,如果key不存在,则新建哈希列表,然后执行赋值,如果key下的field已经存在,则value值覆盖。
返回值:返回设置成功的键值对个数。
在这里插入图片描述

1.11.5.2hget
语法:hget key field
功能:获取哈希表 key 中给定域 field 的值。
返回值:field域的值,如果key不存在或者field不存在返回nil。
在这里插入图片描述

1.11.5.3hmset
语法:hmset key field value [field value…]
功能:同时将多个 field-value (域-值)设置到哈希表 key 中,此命令会覆盖已经存在的field,hash表key不存在,创建空的hash表,再执行hmset.
返回值:设置成功返回ok,如果失败返回一个错误。
在这里插入图片描述

1.11.5.4hmget
语法:hmget key field [field…]
功能:获取哈希表 key 中一个或多个给定域的值
返回值:返回和field顺序对应的值,如果field不存在,返回nil。
在这里插入图片描述

1.11.5.5hgetall
语法:hgetall key
功能:获取哈希表 key 中所有的域和值
返回值:以列表形式返回hash中域和域的值,key不存在,返回空hash.
在这里插入图片描述

1.11.5.6hdel
语法:hdel key field [field…]
功能:删除哈希表 key 中的一个或多个指定域field,不存在field直接忽略。
返回值:成功删除的field的数量。
在这里插入图片描述

1.11.5.7hlen
语法:hlen key
功能:获取哈希表 key 中域field的个数
返回值:数值,field的个数。key不存在返回0.
在这里插入图片描述

1.11.5.8hexists
语法:hexists key field
功能:查看哈希表 key 中,给定域 field 是否存在
返回值:如果field存在,返回1,其他返回0。
在这里插入图片描述

1.11.5.9hkeys
语法:hkeys key
功能:查看哈希表 key 中的所有field域列表
返回值:包含所有field的列表,key不存在返回空列表
在这里插入图片描述

1.11.5.10hvals
语法:hvals key
功能:返回哈希表 中所有域的值列表
返回值:包含哈希表所有域值的列表,key不存在返回空列表。
在这里插入图片描述

1.11.5.11hincrby
语法:hincrby key field int
功能:给哈希表key中的field域增加int
返回值:返回增加之后的field域的值
在这里插入图片描述

1.11.5.12hincrbyfloat
语法:hincrbyfloat key field float
功能:给哈希表key中的field域增加float
返回值:返回增加之后的field域的值
在这里插入图片描述

1.11.5.13hsetnx
语法:hsetnx key field value
功能:将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在的时候才设置,否则不设置。
返回值:设值成功返回1,其他返回0.
在这里插入图片描述
内部编码
哈希类型 的 内部编码 有两种:

2.1. ziplist(压缩列表)
当 哈希类型 元素个数 小于 hash-max-ziplist-entries 配置(默认 512 个)、同时 所有值 都 小于 hash-max-ziplist-value 配置(默认 64 字节)时,Redis 会使用 ziplist 作为 哈希 的 内部实现,ziplist 使用更加 紧凑的结构 实现多个元素的 连续存储,所以在 节省内存 方面比 hashtable 更加优秀。

2.2. hashtable(哈希表)
当 哈希类型 无法满足 ziplist 的条件时,Redis 会使用 hashtable 作为 哈希 的 内部实现,因为此时 ziplist 的 读写效率 会下降,而 hashtable 的读写 时间复杂度 为 O(1)。

下面的示例演示了 哈希类型 的 内部编码,以及相应的变化。

当 field 个数 比较少,且没有大的 value 时,内部编码 为 ziplist:

127.0.0.1:6379> hmset hashkey f1 v1 f2 v2
OK
127.0.0.1:6379> object encoding hashkey
“ziplist”
当有 value大于64 字节时,内部编码 会由 ziplist 变为 hashtable:
127.0.0.1:6379> hset hashkey f3 “one string is bigger than 64 byte…忽略…”
OK
127.0.0.1:6379> object encoding hashkey
“hashtable”
当 field 个数 超过512,内部编码 也会由 ziplist 变为 hashtable:
127.0.0.1:6379> hmset hashkey f1 v1 f2 v2 f3 v3 … f513 v513
OK
127.0.0.1:6379> object encoding hashkey
“hashtable”

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

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

相关文章

基于SSM+Vue的舞蹈网站

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

大二上Redis学习笔记

redis非关系型数据库NOSQL,用c语言编写的,基于内存的数据库,每秒支持十几万的读写操作,性能远超数据库,还支持集群、分布式、主从同步等配置。 Redis基本功能 1 发布订阅系统 2 地图信息分析 3 计时器和计数器 redis运行的图形界…

【腾讯云TDSQL-C Serverless 产品体验】使用 Python向TDSQL-C添加读取数据实现词云图

关于TDSQL-C Serverless介绍 TDSQL-C 是腾讯云自主研发的新一代云原生关系型数据库。 它融合了传统数据库、云计算和新硬件技术的优势,100%兼容 MySQL,为用户提供具有极致弹性、高性能、高可用性、高可靠性和安全性的数据库服务。 TDSQL-C 实现了超过百万每秒的高吞吐量,支持…

SpringCloud 学习(四)Hystrix

6. Netflix.Hystrix 6.1 简介 ● 扇出 多服务之间调用,若微服务 A 调用微服务 B 和微服务 C,微服务 B 和 微服务 C 又调用其他微服务,这就是扇出 ● 服务雪崩 若扇出的链路上某个微服务的调用响应时间过长或者不可用,么此扇出…

ESP32在CAN(TWAI)波特率不同时收发数据,导致总线错误无法恢复

问题描述: 总线上有两个设备,主机:100ms周期发送数据。从机:以不同波特率发送数据,再把从机波特率调节至主机波特率一致无法通信。 环境:VSCODE IDF-v5.0 问题分析: 我们先看下ESP32技术参…

Spring 学习(四)注解实现自动装配及注解开发

1. 注解实现自动装配 JDK 1.5 开始支持注解&#xff0c;Spring 2.5 开始支持注解。 使用须知 导入约束 配置注解的支持&#xff08; <context:annotation-config/> &#xff09; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns&qu…

2023微信头像生成小程序,国庆头像生成,基于skyline+vue3+t

微信头像生成小程序&#xff0c;基于skylinevue3t该项目已适配微信小程序隐私政策&#xff0c;截图、获取头像等诸多新的接口 如何使用&#xff1a; 将代码导入到HBuilderX开发工具&#xff0c; 可无需修改任何代码&#xff0c;运行并编译到微信开发者工具 skyline需要使用微…

layui中使用JavaScript监听下拉框(select)的变化,根据选中的值来决定是否显示或隐藏input元素

HTML代码 <div class"layui-form-item" id"rubric"><label class"layui-form-label">前端说明</label><div class"layui-input-inline"><input type"text" id"user_rubric" name"…

页面添加遮罩层

1.css代码 // 子绝父相.self-check-tag {display: inline-block;min-width: 132px;height: 32px;position: relative;.overlay {position: absolute;top: 0;left: 0;width: 100%;height: 100%;background-color: gray;opacity: 0.1;}2.效果

QT windows dpi变化导致的界面异常处理

问题&#xff1a;已经在UI界面中利用布局设计好界面&#xff0c;但是运行程序后显示的界面出现错乱&#xff0c;而且在做出一些修改后重新构建&#xff0c;运行时界面无变化。 目录 一、解决UI设计界面与运行时显示界面不一致的问题 1、导致该现象的原因有&#xff1a;显示屏…

[Linux] 3.Linux下编码和执行文件

Ctrl Alt T快捷键调出命令终端 输入xrandr指令把现有的电脑分辨率列出来 &#xff0c;xrandr -s 分辨率可以调节至想要的分辨率 调节字体大小&#xff1a;Ctrl Shift “”或Ctrl Shift “-” 使字体变大变小 拖动窗口右下角可调节窗口大小 Ctrl “L”清屏 编写C代码文件:…

【数据结构】散列表(哈希表)的学习知识总结

目录 1、散列表 2、散列函数 2.1 定义 2.2 散列函数的构造 2.2.1 除留余数法 2.2.2 直接定址法 2.2.3 数字分析法 2.2.4 平方取中法 3、冲突&#xff08;碰撞&#xff09; 4、处理冲突的方法 4.1 拉链法&#xff08;链接法&#xff09; 4.2 开放定址法 5、C语言…

电缆直埋、电缆沟、电缆井大样图

一、图纸下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1_SUnhFHMUY8Q_kkhgzscDQ?pwd8888 提取码&#xff1a;8888 二、部分图纸预览

GoogLeNet网络

目录 1. 创新点 1.1 引入Inception结构 1.2 11卷积降维 1.3 两个辅助分类器 1.4 丢弃全连接层&#xff0c;使用平均池化层 2. 网络结构 3. 知识点 3.1 torch.cat 3.2 关于self.training 3.3 关于load_state_dict中的strict 4. 代码 4.1 model.py 4.2 train.py …

MQ - 30 基础功能:死信队列的设计

文章目录 导图概述什么是死信队列死信队列实现的技术方案死信队列的存储目标死信队列的方案设计生产死信队列消费死信队列Broker 的死信队列主流消息队列的死信功能RocketMQRabbitMQ总结导图 概述 在日常业务的消费数据过程中,如果遇到数据无法被正确处理,就需要先手动把消息…

202309解决新版Animate Diff报错问题

在安装最新版的Animate Diff的时候发现报错了 ImportError: cannot import name images_tensor_to_samples from modules.sd_samplers_common (W:\A1111\stable-diffusion-webui\modules\sd_samplers_common.py)原因很简单&#xff0c;Animate diff已经适配了新版webui1.6 所以…

基于LQR算法的一阶倒立摆控制

1. 一阶倒立摆建模 2. 数学模型 倒立摆的受力分析网上有很多&#xff0c;这里就不再叙述。直接放线性化后的方程&#xff1a; F (Mm)x″-mLφ″ (ImL)φ″ mLx″ mgLφ&#xff08;F为外力&#xff0c;x为物块位移&#xff0c;M&#xff0c;m为物块和摆杆的质量&#xff0c;…

计算机是怎么跑起来的(2)?程序如何驱动硬件工作的?

上文计算机是怎么跑起来的?从零开始手动组装微型计算机我们说了&#xff0c;如何手动从来组装一台计算机&#xff0c;那组装完后的计算机上是怎么跑起来程序的呢&#xff1f;程序是如何驱动硬件工作的&#xff1f; 前面我们通过DMA将代码输入到内存的指定位置&#xff0c;然后…

JavaWeb 学习

1. 基本概念 1.1 Web web&#xff1a;网络&#xff0c;网页 静态 web html&#xff0c;css提供给所有人看的数据始终不会变化 动态 web 淘宝提供给每个人看的数据会有所不同技术栈&#xff1a;Servlet/JSP&#xff0c;ASP&#xff0c;PHP Java 中&#xff0c;动态 web 资…

如何通过优化Read-Retry机制降低SSD读延迟?

近日,小编发现发表于2021论文中,有关于优化Read-Retry机制降低SSD读延迟的研究,小编这里给大家分享一下这篇论文的核心的思路,感兴趣的同学可以,可以在【存储随笔】VX公号后台回复“Optimizing Read-Retry”获取下载链接。 本文中主要基于Charge Trap NAND架构分析。NAND基…