Redis数据结构-RedisObject

1.7 Redis数据结构-RedisObject

Redis中的任意数据类型的键和值都会被封装为一个RedisObject,也叫做Redis对象,源码如下:

1、什么是redisObject:
从Redis的使用者的角度来看,⼀个Redis节点包含多个database(非cluster模式下默认是16个,cluster模式下只能是1个),而一个database维护了从key space到object space的映射关系。这个映射关系的key是string类型,⽽value可以是多种数据类型,比如:
string, list, hash、set、sorted set等。我们可以看到,key的类型固定是string,而value可能的类型是多个。
⽽从Redis内部实现的⾓度来看,database内的这个映射关系是用⼀个dict来维护的。dict的key固定用⼀种数据结构来表达就够了,这就是动态字符串sds。而value则比较复杂,为了在同⼀个dict内能够存储不同类型的value,这就需要⼀个通⽤的数据结构,这个通用的数据结构就是robj,全名是redisObject。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Redis的编码方式

Redis中会根据存储的数据类型不同,选择不同的编码方式,共包含11种不同类型:

编号编码方式说明
0OBJ_ENCODING_RAWraw编码动态字符串
1OBJ_ENCODING_INTlong类型的整数的字符串
2OBJ_ENCODING_HThash表(字典dict)
3OBJ_ENCODING_ZIPMAP已废弃
4OBJ_ENCODING_LINKEDLIST双端链表
5OBJ_ENCODING_ZIPLIST压缩列表
6OBJ_ENCODING_INTSET整数集合
7OBJ_ENCODING_SKIPLIST跳表
8OBJ_ENCODING_EMBSTRembstr的动态字符串
9OBJ_ENCODING_QUICKLIST快速列表
10OBJ_ENCODING_STREAMStream流

五种数据结构

Redis中会根据存储的数据类型不同,选择不同的编码方式。每种数据类型的使用的编码方式如下:

数据类型编码方式
OBJ_STRINGint、embstr、raw
OBJ_LISTLinkedList和ZipList(3.2以前)、QuickList(3.2以后)
OBJ_SETintset、HT
OBJ_ZSETZipList、HT、SkipList
OBJ_HASHZipList、HT

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

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

相关文章

OpenHarmony 实战开发——使用分布式菜单创建点餐神器

随着社会的进步与发展,科技手段的推陈出新,餐饮行业也在寻求新的突破与变革,手机扫描二维码点餐系统已经成为餐饮行业的未来趋势,发展空间巨大;扫码点餐,是“互联网餐饮”潮流的产物,可以有效地…

scanf、printf、string函数族

scanf函数族 #include "stdio.h" //从标准输入stdin中读数据放入对应空间 //scanf 从控制终端(即stdin)输入,而这个输入是一个缓冲区。因此,它从缓冲区顺序取数据,而不支持随机读。 int scanf( const char *format [,argument]... …

学前端网络安全这块还不懂?细说CSRF

什么是CSRF? 举个栗子,比如我们需要在某个博客上删除一个文章,攻击者首先在自己的域构造一个页面,使用了一个img标签,其地址指向了删除博客的链接。攻击者诱使目标用户,也就是博客主访问这个页面&#xff…

SOP for Oracle 23ai:Python 连接 Oracle 的两种方法

前情回顾 前文介绍了如何使用 python-oracledb 连接 Oracle 23ai 数据库,并演示了如何使用独立连接方式。 其中提到了支持两种连接池: DRCP 和 PRCP。 本文将对这两种连接池做具体演示。 DRCP 和 PRCP 连接池 连接池技术的优点不言而喻: 缩短…

稚晖君独家撰文:具身智能即将为通用机器人补全最后一块拼图

具身智能新纪元。 *本文为稚晖君独家供稿,「甲子光年」经智元机器人授权发布。稚晖君本名彭志辉,先后任职OPPO、华为,现为智元机器人CTO、首席架构师。 在ChatGPT之后,又一个大模型概念火了——具身智能(Embodied AI)。 在学术界,图灵奖得主、上海期智研究院院长姚期…

吞吐量 和 延时的关系

关于吞吐量/吞吐率、延时,你可以通过 Jmeter中的”聚合报告“和”用表格查看报告“来获取。 Throughput 越大,Latency 越差:因为请求过多,系统繁忙导致响应速度降低。Latency 的值越小说明能支持的 Throughput 越高:L…

软考一年只能考一次吗?24软考各科目考试时间一览表

软考考试次数: 软考高级【系统分析师】及【系统架构设计师】是一年考两次的。 此外,软考中级【软件设计师】和【网络工程师】也是一年考两次的。 其他科目一年都只开考一次,或者上半年开考,或者下半年开考,具体考试…

分页查询PageHelper插件分页条件查询(xml映射文件,动态SQL)

黑马程序员JavaWeb开发教程 文章目录 一、分页查询-分析二、分页查询-实现1. 实现思路1.1 controller1.2 service1.3 mapper 1.4 postman测试接口 三、分页查询-PageHelper插件1. 引入pageHelper插件的依赖2. 修改原来的代码2.1 mapper2.2 serviceimpl2.3 postman测试接口 四、…

47 tcp网络程序

网路聊天 API详解 下面用到的API,都在sys/socket.h中 socket (): socket() 打开一个网络通讯端口,如果成功的话,就像open() 一样返回一个文件描述符应用程序可以像读文件一样用read/write在网络上收发数据如果调用出错返回-1对于IPv4&am…

Day28 代码随想录打卡|栈与队列篇---逆波兰表达式求值

题目(leecode T150): 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数(运算…

机械手避障如何选择激光雷达?

在选择用于机械手避障的激光雷达时,应该考虑以下主要技术参数: 测量范围:激光雷达的测量范围决定了它能够检测到的最大距离。您需要根据机械手的应用场景和工作环境来选择合适的测量范围。 精度:精度是激光雷达测量结果的重要参数…

simlink 初步了解

1.simlink概要 Simulink是基于MATLAB的框图设计环境,它提供了一个动态系统建模、仿真和分析的集成环境。Simulink是一个模块图环境,用于多域仿真以及基于模型的设计。它支持系统设计、仿真、自动代码生成以及嵌入式系统的连续测试和验证。 Simulink的特…

ENZO--Leptin (human) ELISA kit

瘦素(Leptin)是由ob基因编码、在脂肪组织中生成的一种脂肪代谢调控产物,在代谢和调控体重等方面发挥重要作用。它通过下丘脑中的瘦素受体发出信号,降低食欲,增加能量消耗。在外周组织中,瘦素能拮抗胰岛素信号传导,增加…

常用的chromr命令

一、以下是一些实用的Chrome命令: chrome://extensions/:打开扩展程序页面,可以管理和配置已安装的扩展程序。 chrome://settings/:打开Chrome的设置页面,可以配置浏览器的各种选项和功能。 chrome://history/&#…

2024OD机试卷-小朋友来自多少小区 (java\python\c++)

题目:小朋友来自多少小区 题目描述 幼儿园组织活动,老师布置了一个任务: 每个小朋友去了解与自己同一个小区的小朋友还有几个。 我们将这些数量汇总到数组 garden 中。 请根据这些小朋友给出的信息,计算班级小朋友至少来自几个小区? 输入描述 输入:garden[] = {2, 2,…

王道c语言-文件操作

fopen fgetc fputc fwrite fread fgets fputs //main.c #include <stdio.h> #include <string.h>int main() {FILE *fp;int ret;//打开/创建文件fp fopen("test.txt", "wb");if (NULL fp) {perror("fopen fail");//perror aim to…

二级和三级城市插件

二级城市插件 1.首先引入jquery <script type="text/javascript" src="js/jquery-1.8.3.js" ></script>2.html <body><select id="province"></select><select id="city"></select><…

yolo进行视频检测结果没有生成

你可能用了这套代码&#xff1a; from ultralytics import YOLO# Load a pretrained YOLOv8n model model YOLO(./best.pt)# Define path to video file source r".\WeChat_20240515193007.mp4"# Run inference on the source results model(source, streamTrue)…

Windows只能安装在GPT磁盘上

转换磁盘分区形式 步骤1. 先按照正常流程使用Windows系统安装光盘或系统U盘引导计算机。 步骤2. 在Windows安装程序中点击“开始安装”&#xff0c;然后按ShiftF10打开命令提示符。 步骤3. 依次输入以下命令&#xff0c;并在每一行命令后按一次Enter键执行。 步骤4. 等待转换…

windows本地mvn安装示例

背景 maven安装jar示例 由于引入的jar包一直打不进jar,只好本地安装 maven安装jar示例 一定要加引号,不加引号报错 mvn install:install-file "-DfileD:\my_projects\wechat-miniprogram-scan-qrcode-login-website\wechat-server\lib\aspose-pdf-23.1.jar" &quo…