Redis(二)value 的五种常见数据类型简述
目录
一、string(字符串)
1、raw
2、int
3、embstr
二、hash(哈希表)
1、hashtable
2、ziplist
三、list(列表)
编辑
1、linkedlist
2、ziplist
3、quicklist(redis 3.2后的列表内部编码方案)
四、set(集合)
1、hashtable
2、intset
五、zset(有序集合)
1、skiplist
2、ziplist
六、查询 value 内部编码格式
Redis 键值对结构中的 value 有五种最为常见的数据类型:它们分别是:string(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合)
PS:redis 只是确保对外用户使用的时候,可以按照提供的数据类型进行使用,时间复杂度也和提供的数据类型保持一致;但是底层在实现上述数据类型的时候,会在源码方面进行优化,即内部编码方式会有所不同。 (redis 会自动根据实际情况选择内部编码格式,用户无感知,我们只需要理解其思想即可)
一、string(字符串)
1、raw
raw 就是最基本的字符串,底层是 char 数组。
2、int
redis 一般也可以用来实现一些计数功能;因此当 value 是整数的时候,redis 底层就会把这个 value 优化成 int 来保存,占用空间小,也便于计算。
3、embstr
针对短字符串进行特殊优化
二、hash(哈希表)
这里的 hash 类似于 C++ 中的 unordered_map

1、hashtable
hashtable 就是最基本的哈希表。
2、ziplist
ziplist 叫做压缩列表,其本质是个链表;在元素较少的时候,链表遍历时间复杂度也接近 O(1),这时候,redis 就会把 hash 类型的 value 底层优化成 ziplist,可以有效节省空间。
三、list(列表)
这里的 list 底层类似链表,类似C++中的 deque (双端队列,元素可以从首尾弹出)
1、linkedlist
linkedlist 就是最基本的链表,大部分情况下都是这个
2、ziplist
即压缩列表,在元素比较少的时候会优化成 ziplist,节省空间
3、quicklist(redis 3.2后的列表内部编码方案)
在 redis 3.2 版本之后,list 内部编码方案以 quicklist 代替了 linkedlist 和 ziplist,其同时拥有 linkedlist 和 ziplist 的特点:quicklist 整体结构是个链表,链表中的每个元素又都是 ziplist。
(PS:只是 list 类型中的 ziplist 被 quicklist 所替代,但是其它数据类型底层的 ziplist 仍然使用)
四、set(集合)
set 中可以包含若干个元素,但是这些元素不能重复。

1、hashtable
hashtable 就是最基本的哈希表
2、intset
当 set 类型的 value 中存储的都是整数时,redis 会把其底层优化成 intset
五、zset(有序集合)
zset 在存储元素的同时,还会存储权重,并把元素依照权重大小进行优先级排序。
1、skiplist
skiplist 是跳表,其本质也是链表,但是其不同于普通的链表,其每个节点有多个指针域,根据这些指针域的灵活搭配,可以做到在跳表上查询元素的时间复杂度为 O(log n)
2、ziplist
压缩链表,和之前的一致,不再赘述。
六、查询 value 内部编码格式
object encoding key名
可以通过 object encoding,查看某个 key 对应的 value 的内部实际编码格式。
相关文章:
Redis(二)value 的五种常见数据类型简述
目录 一、string(字符串) 1、raw 2、int 3、embstr 二、hash(哈希表) 1、hashtable 2、ziplist 三、list(列表) 编辑 1、linkedlist 2、ziplist 3、quicklist(redis 3.2后的列表内…...
Docker 环境中搭建 Redis 哨兵模式集群的步骤与问题解决
在 Docker 环境中搭建 Redis 哨兵模式集群的步骤与问题解决 在 Redis 高可用架构中,哨兵模式(Sentinel)是确保 Redis 集群在出现故障时自动切换主节点的一种机制。通过使用 Redis 哨兵,我们可以实现 Redis 集群的监控、故障检测和…...
【网页自动化】篡改猴入门教程
安装篡改猴 打开浏览器扩展商店(Edge、Chrome、Firefox 等)。搜索 Tampermonkey 并安装。 如图安装后,浏览器右上角会显示一个带有猴子图标的按钮。 创建用户脚本 已进入篡改猴管理面板点击创建 脚本注释说明 name:脚本名称。…...
【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 4:MHE表示能力
目录 1 MHE的表示能力2 基于Frobenius-范数的低秩逼近3 基于CE的低秩近似 论文:Multi-Head Encoding for Extreme Label Classification 作者:Daojun Liang, Haixia Zhang, Dongfeng Yuan and Minggao Zhang 单位:山东大学 代码:h…...
Github - unexpected disconnect while reading sideband packet
Open git global config: git config --global -eLet’s try to resolve the issue by increasing buffer: git config --global http.postBuffer 52428800Try to clone again. If that doesn’t work! > You can try the partial fetch method and disabling compressi…...
Ubuntu 环境安装 之 RabbitMQ 快速入手
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:RabbitMQ 📚本系列文章为个人学…...
UE5中实现右键开镜效果
右键之后添加时间轴,然后设置视野即可。Set Field Of View 时间轴设置,第一个点设置0,90度,因为默认的就是90度 第二个点看武器的类型或者倍境来设置,时间就是开镜时间,值越小开镜速度越快,第二个值就是视野…...
Apache HTTPD 换行解析漏洞(CVE-2017-15715)
漏洞简介 pache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 漏洞环境 vulhub/httpd/CVE-2…...
Excel重新踩坑5:二级下拉列表制作;★数据透视表;
0、在excel中函数公式不仅可以写在单元格里面,还可以写在公式里面。 1、二级下拉列表制作: 2、数据透视表: 概念:通过拖拉就能实现复杂函数才能实现的数据统计问题。 概览:在插入选项中有个数据透视表,数…...
力扣--35.搜索插入位置
题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 …...
C# 设计模式(行为型模式):模板方法模式
C# 设计模式(行为型模式):模板方法模式 在开发过程中,我们经常会遇到一类问题:一些操作的整体步骤是固定的,但某些具体步骤的实现会因为场景不同而有所变化。模板方法模式(Template Method Pat…...
Leetcode打卡:设计一个ATM机器
执行结果:通过 题目 2241 设计一个ATM机器 一个 ATM 机器,存有 5 种面值的钞票:20 ,50 ,100 ,200 和 500 美元。初始时,ATM 机是空的。用户可以用它存或者取任意数目的钱。 取款时,…...
【TCP】SYN、ACK、FIN、RST、PSH、URG的全称
在 TCP 协议中,SYN、ACK、FIN、RST、PSH 和 URG 都是控制标志位(Flags),每个标志位对应不同的功能。它们的全称如下: URG:(URGent)紧急 ACK:(ACKnowledgment)确认 PSH:(PuSH)推送 RS…...
【OceanBase】使用 Superset 连接 OceanBase 数据库并进行数据可视化分析
文章目录 前言一、前提条件二、操作步骤2.1 准备云主机实例2.2 安装docker-compose2.3 使用docker-compose安装Superset2.3.1 克隆 Superset 的 GitHub 存储库2.3.2 通过 Docker Compose 启动 Superset 2.4 开通 OB Cloud 云数据库2.5 获取连接串2.6 使用 Superset 连接 OceanB…...
【通识安全】应急救护常识23则
一、异物入眼 任何细小的物体或液体,哪怕是一粒沙子或是一滴洗涤剂进入眼中,都会引起眼部疼痛,甚至损伤眼角膜。 急救办法:首先是用力且频繁地眨眼,用泪水将异物冲刷出去。如果不奏效,就将眼皮捏起&#…...
C语言:cJSON将struct结构体与JSON互相转换
文章目录 struct 转 jsonjson 转 struct 文档: https://github.com/DaveGamble/cJSON 项目结构 . ├── libs │ ├── cJSON.c │ └── cJSON.h └── main.c示例 struct 转 json #include "libs/cJSON.h" #include <stdio.h>// defi…...
在Linux中,如何查看和修改网络接口配置?
在Linux中,查看和修改网络接口配置主要依赖于几个命令行工具。这里详细介绍两种传统的命令行方式以及一些图形化工具(前提:系统支持): 一、临时性修改 1. 使用ifconfig命令(部分系统已被弃用)…...
使用深度学习来实现图像超分辨率 综述!
今天给大家介绍一篇图像超分辨率邻域的综述,这篇综述总结了图像超分辨率领域的几方面:problem settings、数据集、performance metrics、SR方法、特定领域应用以结构组件形式,同时,总结超分方法的优点与限制。讨论了存在的问题和挑…...
基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划
• 关于前后端分离 当前流行的一种常见的前后端分离模式是vueflask,vueflask模式的前端和后端之间进行数据的传递通常是借助 API(应用程序编程接口)来完成的。vue通过调用后端提供的 API 来获取或提交数据。例如,前端可能通过发送…...
【Android项目学习】3. MVVMHabit
项目链接 文章目录 一. 项目结构1. 项目整体划分2. 模块细分 二. Android知识点学习1. registerActivityLifecycleCallbacks方法2. 一. 项目结构 1. 项目整体划分 MVVMHabit是以谷歌DataBindingLiveDataViewModel框架为基础,整合OkhttpRxJavaRetrofitGlide等流行…...
Floccus实现跨浏览器书签同步
1. 关于Floccus Floccus是一款浏览器插件, 依赖Nextcloud,坚果云或者Google Drive等云端存储实现不同浏览器之间的书签同步 官网地址: https://floccus.org Github地址: https://github.com/floccusaddon/floccus 2. 云盘选择 Nextcloud(自行搭建), 坚果云(支持WebDAV 协议)…...
别再乱用self了!深入理解Python中@staticmethod和@classmethod的正确使用场景
别再乱用self了!深入理解Python中staticmethod和classmethod的正确使用场景 在Python开发中,我们经常会遇到各种关于方法调用的困惑。特别是当看到"missing 1 required positional argument"这样的错误时,很多开发者会感到一头雾水…...
5分钟图解数码管驱动:从段选码表到位选扫描实战
1. 数码管驱动基础:从LED到数字显示 数码管本质上是一组排列成特定形状的LED灯。每个数码管由8个LED段组成(包括小数点),通过点亮不同段的组合来显示数字或字母。我第一次接触数码管是在大学电子设计课上,当时为了做一…...
行业创新技术:区块链测试应用前瞻
当测试遇上区块链,质量保障的新边疆随着数字化转型的浪潮席卷全球,软件测试作为保障系统质量的关键环节,正面临着前所未有的挑战:数据真实性难以验证、跨系统协作流程追溯困难、安全审计要求日益严苛。与此同时,区块链…...
ITE 联阳半导体推出新一代 IT6115:集成分路器与信号放大器的 MIPI 全能转换方案
随着 AR/VR、折叠屏及智能座舱等高端影像市场的爆发,MIPI 接口在带宽、传输距離以及协议兼容性上正面临前所未有的挑战 。联阳半导体(ITE)顺势推出了高度集成的 MIPI D-PHY / C-PHY 双模转换核心——IT6115 。IT6115 并非简单的桥接芯片&…...
Matlab filter函数从入门到进阶:除了b和a,你必须要懂的zi和zf参数怎么用
Matlab filter函数进阶指南:掌握zi和zf参数实现无缝分段滤波 在信号处理的实际工程场景中,我们常常会遇到内存受限或数据流式到达的情况。想象一下,你正在处理一段长达数小时的音频文件,或者实时接收来自传感器的连续数据流——直…...
SVD不只是数学:深入浅出看懂它在推荐系统和图像压缩里是怎么工作的
SVD不只是数学:深入浅出看懂它在推荐系统和图像压缩里是怎么工作的 当你在线购物时,那些"猜你喜欢"的商品推荐从何而来?当你用手机拍摄照片并上传社交平台时,图片为何能快速加载且不失真?这背后都藏着一个强…...
批量生成流程卡功能,助力企业简化工序流转与信息录入工作
对于生产型企业而言,进销存管理的核心不仅是库存的“进、销、存”,更在于生产工序的规范化、流程的可追溯——而流程卡,正是串联起订单、工序、库存与交付的关键纽带。流程卡详细记录每一批产品的加工步骤、原料清单,既是生产人员…...
01华夏之光永存:黄大年茶思屋榜文解法「第7期1题」OXC超快速切波技术·双路径解法
华夏之光永存:黄大年茶思屋榜文解法「第7期1题」 OXC超快速切波技术双路径解法(约束内最优本源降维) 一、摘要 本题为全光传送领域世界级底层技术难题,本文采用工程化可复现逻辑,提供两条标准化解题路径,全…...
动态数据源类型转换终极指南:轻松实现多数据源无缝切换
动态数据源类型转换终极指南:轻松实现多数据源无缝切换 【免费下载链接】dynamic-datasource dynamic datasource for springboot 多数据源 动态数据源 主从分离 读写分离 分布式事务 项目地址: https://gitcode.com/gh_mirrors/dy/dynamic-datasource dyna…...
