Redis数据类型与内部编码

在Redis中通常普遍认为,使用redis的能进行查询,插入,删除,修改操作都是O(1)是因为他是利用hash表实现的,但是,背后的实现不一定是一个标准的hash表,它内部的数据类型还会有变数,不过仍然能保证时间复杂度符合承诺。

在面对不同的场景,redis会进行特定的优化,不同的数据类型(value值)的实现会有不同的内部编码格式,如下表所示。

string

raw:最基本的字符串。(底层就是一个C++的char数组,或者Java的byte数组)

int:当value是整数的时候,此时redis可能会直接使用int来保存。

embstr:针对短字符串进行的特殊优化。

hash

hashtable:最基本的hash表。(不是Java标准库中的HashTable)

ziplist:压缩列表,能够节省空间,在hash表元素比较少的时候,可能就会优化成ziplist。

list

linkedlist:最基本的链表。

ziplist:压缩列表。

!!!注意:从redis3.2开始,引入了新的实现方式quicklist,结合两者优点来替代上面两种方式,但ziplist任然存在。

set

hashtable:最基本的hash表。

intset:集合中存的都是整数

zset

skiplist:跳表,跳表也是链表,不同于普通的链表,每个节点上有多个指针域。(类似于经典题目“随机链表的复制”力扣138题)

ziplist:压缩列表。

如果想要知道当前的key是什么编码方式可以使用object encoding key来查询。

对于上面的数据类型采用的哪种编码方式,最重要的是能知道思想,而不用去记数字。

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

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

相关文章

03-netty基础-多路复用select、poll、epoll

1 什么是多路复用多路复用(Multiplexing) 是一种让单个线程同时处理多个 I/O 通道的技术,核心是通过系统调用将 I/O 状态查询的工作交给操作系统内核,应用程序只需等待内核通知哪些通道就绪。多路:指的是多个socket网络…

网易大模型算法面经总结第一篇

网友一 MHA的原理,是如何进行加速的,用的什么框架推理。 回答: ①先答一下什么是MHA:Multi-Head Attention(MHA)是 Transformer 的核心机制,并行地关注输入序列中不同位置的多种信息 ②回答MHA的…

Vue3 面试题及详细答案120道(91-105 )

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

SAP-MM-物料进销存表

ABAP库存进销存报表程序摘要 该ABAP程序是一个完整的库存进销存报表系统,主要功能包括: 报表类型选择: 物料库存进销存 批次库存进销存 寄售库存进销存 供应商库存进销存 原料库存进销存 主要功能: 从历史数据表(MARDH, MSKAH, MSLBH, MCHBH等)获取期初库存 处理物料移动数…

这几天都是发癫写的

#include <iostream> #include <vector> #include <unordered_map> #include <algorithm> #include <cmath> // for sqrt// Gen-Sort 实现&#xff08;保持不变&#xff09; void genSort(std::vector<int>& arr) {if (arr.empty()) r…

QT6 源,七章对话框与多窗体(11) 进度对话框 QProgressDialog:属性,公共成员函数,槽函数,信号函数,与源代码带注释

&#xff08;1&#xff09; 本类的继承关系 &#xff1a;可见&#xff0c;进度对话框&#xff0c;也是 QDialog 的子类&#xff0c;在其上面又摆放了一些控件&#xff0c;构成了不同用途的对话框。咱们也可以自定义对话框。只是没有 QT 官方大师们做的好。 人家在定义这 6 个子…

学习游戏制作记录(技能系统)7.24

1.技能系统概念首先让我们了解一下游戏的技能本质是什么&#xff0c;以投掷剑为例子&#xff0c;当玩家使用这个技能时&#xff0c;首先会播放玩家的动画&#xff0c;随后通过技能脚本创建一个剑的对象&#xff0c;当剑回收时会再次调用脚本&#xff0c;让它朝向玩家飞来并销毁…

外部存档(External Archive)机制

前言 提醒&#xff1a; 文章内容为方便作者自己后日复习与查阅而进行的书写与发布&#xff0c;其中引用内容都会使用链接表明出处&#xff08;如有侵权问题&#xff0c;请及时联系&#xff09;。 其中内容多为一次书写&#xff0c;缺少检查与订正&#xff0c;如有问题或其他拓展…

MybatisPlus操作方法详细总结

摘要&#xff1a;本文围绕 MyBatis-Plus 数据操作展开&#xff0c;涵盖标准数据层 CRUD 与分页查询&#xff1b;以及各种的复杂 SQL 查询&#xff1b;映射匹配&#xff08;TableField、TableName 注解&#xff09;与 ID 生成策略&#xff08;TableId 五种类型及全局配置&#x…

【C语言进阶】动态内存管理的面试题||练习

本节内容专门整理了一些动态内存管理的面试题&#xff0c;配有详细的解答。 目录 1. 看代码说结果 2. 看代码说结果 3. 看代码说结果 4.小乐乐与欧几里得 描述 分析1&#xff1a; 分析2&#xff1a; 代码&#xff1a; 5. 空心正方形 分析&#xff1a; 1. 看代码说结…

【图论】倍增与lca

void dfs(long u,long father){ dep[u]dep[father]1;//只在这里初始化depfor(long i1;(1<<i)<dep[u];i)fa[u][i]fa[fa[u][i-1]][i-1];//只这里用的倍增for(long ihead[u];~i;iedge[i].next){long vedge[i].to;if(vfather)continue;fa[v][0]u;dfs(v,u); }} long lca(lo…

VS Code 美化插件

目录1. Better Comments 更好的注释2. indent-rainbow 彩虹的缩进3. Trailing Spaces 尾随的空格4. Gruvbox Material 护眼的材质5. Md Editor 博客编辑器6. 待补充推荐笔记&#xff1a;VS Code写代码必备的五款代码美化插件 1. Better Comments 更好的注释 Better Comments Be…

火语言 RPA 在日常运维中的实践

在系统运维和技术支持工作中&#xff0c;总有一些操作像 “固定程序” 一样循环往复&#xff1a;定期检查服务器状态、批量处理用户权限申请、手动清理系统日志…… 这些工作步骤固定、逻辑简单&#xff0c;却占用了大量本可用于故障排查和系统优化的时间。近期在优化运维团队的…

FOUPK3system5XOS系统 NTX V2.0发布通知

FOUPK3system5XOS系统NTX V2.0发布通知更新1.系统安全&#xff1a;使用FOUPK3system5XOS NOS X9新内核与FOUPK3system5XOS系统19.63正式版一样提供更好的安全性2.原生应用&#xff1a;启用FOUPK3system5XOS ONS X9 API 72服务FOUPK3system5XOS系统 NTX V2.0用户支持使用FOUPK3…

爬虫算法原理解析

文章目录 核心算法原理 1. 图遍历算法 广度优先搜索(BFS) 深度优先搜索(DFS) 2. URL调度算法 优先级队列调度 3. 页面去重算法 基于哈希的去重 基于布隆过滤器的去重 4. 链接提取与规范化 5. 抓取频率控制算法 6. 增量爬取算法 高级算法策略 1. PageRank算法在爬虫中的应用 2. …

探索双链表:C语言中的链式结构魔法

目录 引言 一、双链表基础 1.1、什么是双链表&#xff1f; 1.2、双链表节点的结构定义 二、双链表的基本操作 2.1、双链表的初始化 2.2、尾插法 2.3、头插 2.4、判断双链表是否为空 2.5、尾删法 2.6、头删法 2.7、查找 2.8、双链表在指定位置之前插入 2.9、双链表…

HTML5 + CSS3模拟西门庆、武大郎和潘金莲的精彩520微信聊天,看完我又相信爱情了

今天520了&#xff0c;我用HTML5 CSS3模拟了西门庆、武大郎和潘金莲的精彩微信聊天&#xff0c;希望你看完以后可以在紧张的工作中&#xff0c;放松一下&#xff0c;开心一下&#xff0c;同时祝你在这个520可以过得开心快乐。 目录 1 实现思路 1.1 聊天实现素材 1.2 HTML布…

【Linux】Linux了解与基本指令(1)

hello~ 很高兴见到大家! 这次带来的是C中关于Linux基本指令这部分的一些知识点,如果对你有所帮助的话,可否留下你宝贵的三连呢? 个 人 主 页: 默|笙 文章目录一、认识Linux二、操作系统&#xff08;OS&#xff09;三、基本指令1. 目录与普通文件1.1 目录1.2 普通文件2. pwd 与…

dify 学习笔记

目录 启动项目 浏览器访问&#xff1a; dify删除工作流 代码是开源dify 启动项目 cd E:\project\qwen\dify-main\docker docker compose up -d 浏览器访问&#xff1a; http://127.0.0.1/apps dify删除工作流 右下角&#xff0c;三个点&#xff0c;点击弹出框&#xff0…

【YOLOv8改进 - 特征融合】FCM:特征互补映射模块 ,通过融合丰富语义信息与精确空间位置信息,增强深度网络中小目标特征匹配能力

YOLOv8目标检测创新改进与实战案例专栏 专栏目录: YOLOv8有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例 专栏链接: YOLOv8基础解析+创新改进+实战案例 文章目录 YOLOv8目标检测创新改进与实战案例专栏 介绍 摘要 文…