当前位置: 首页 > news >正文

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.lryc.cn/news/598340.html

相关文章:

  • Webpack配置原理
  • MongoDB 和 Elasticsearch(ES)区别
  • Windows 下配置 GPU 用于深度学习(PyTorch)的完整流程
  • matrix-breakout-2-morpheus靶场通过
  • 基于深度学习的胸部 X 光图像肺炎分类系统(二)
  • 小架构step系列24:功能模块
  • Android中compileSdk,minSdk,targetSdk的含义和区别
  • M3295NL专为千兆以太网设计,支持100/1000Mbps全双工通信M3295支持4对5类UTP电缆
  • SparkSQL 子查询 IN/NOT IN 对 NULL 值的处理
  • 数据结构 堆(3)---堆排序
  • 在 Windows 上安装设置 MongoDB及常见问题
  • 多源信息融合智能投资【“图神经网络+强化学习“的融合架构】【低配显卡正常运行】
  • 如何清理电脑c盘内存 详细操作步骤
  • dify 变量聚合器-聚合分组问题
  • 【Java工程师面试全攻略】Day12:系统安全与高可用设计
  • 再生基因总结
  • 腾势N9再进化:智能加buff,豪华更对味
  • Dataease2.10 前端二次开发
  • Java 实现 C/S 架构详解:从基础到实战,彻底掌握客户端/服务端编程
  • 机器学习的基础知识
  • LeetCode 2563.统计公平数对的数目
  • AI时代,我的编程工作搭子
  • Windows 主机侧日志排查
  • CentOS7 安装 rust 1.82.0
  • 小模数齿轮的加工方法有哪些?
  • 医疗系统国产化实录:SQL Server国产替代,乙方保命指南
  • MySQL 表的操作
  • 【Haproxy】七层代理
  • 详解力扣高频SQL50题之1683. 无效的推文【入门】
  • MySQL深度理解-MySQL事务优化