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

【Redis】数据结构和内部编码

数据结构和内部编码


type 命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合),但这些只是 Redis 对外的数据结构.

在这里插入图片描述
实际上Redis内部针对每个数据结构都有自己的内部编码, 而且是多种实现, 这样Redis会在合适的场景选择合适的内部编码

在这里插入图片描述


可以看到每种数据结构都有⾄少两种以上的内部编码实现,例如 list 数据结构包含了 linkedlist 和ziplist 两种内部编码。同时有些内部编码,例如 ziplist,可以作为多种数据结构的内部实现,可以通过 object encoding 命令查询内部编码:

在这里插入图片描述

可以看到 hello 对应值的内部编码是 embstr,键 mylist 对应值的内部编码是 ziplist。

Redis 这样设计有两个好处:

  1. 可以改进内部编码, 而对外的数据结构和命令没有任何影响, 这样一旦开发出更优秀的内部编码, 无需改动外部数据结构和命令, 例如Redis 3.2 提供了 quicklist, 结合了 ziplist 和linkedlist 两者的优势, 为列表类型提供了一种更为优秀的内部编码实现, 而对用户来说基本无感知.

  2. 多种内部编码实现可以在不同场景下发挥各自的优势, 例如 ziplist 比较节省内存, 但是在列表元素比较多的情况下, 性能会下降, 这时候 Redis 会根据配置选项将列表类型的内部实现转化为 Linkedlist, 整个过程用户同样无感知.

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 模型量化方法-GPTQ
  • python中%s是什么
  • 【每日刷题】Day105
  • JavaScript 原型与原型链
  • oracle 事务回滚
  • 如何培养单元测试的习惯?怎样才算一个好的单元测试?
  • 计算机图形学 | 动画模拟
  • eNSP 华为ACL配置
  • vue2项目从0到1记录
  • Linux软件编程---数据库
  • VSCode打开HBuilderX创建的uniapp项目
  • Vue.js与UI构建
  • Autojs详解
  • 解决macOS下Homebrew下载慢的问题
  • [JS]经典面试题-基础篇
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • angular组件开发
  • css属性的继承、初识值、计算值、当前值、应用值
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java基本数据类型之Number
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • MySQL用户中的%到底包不包括localhost?
  • PhantomJS 安装
  • React-flux杂记
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • TypeScript迭代器
  • 大快搜索数据爬虫技术实例安装教学篇
  • 类orAPI - 收藏集 - 掘金
  • 模型微调
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 双管齐下,VMware的容器新战略
  • 网络应用优化——时延与带宽
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​Redis 实现计数器和限速器的
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (11)MATLAB PCA+SVM 人脸识别
  • (2)STL算法之元素计数
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (pojstep1.3.1)1017(构造法模拟)
  • (补充)IDEA项目结构
  • (十一)图像的罗伯特梯度锐化
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)Linux下编译安装log4cxx
  • (转)项目管理杂谈-我所期望的新人
  • 、写入Shellcode到注册表上线
  • .“空心村”成因分析及解决对策122344
  • .naturalWidth 和naturalHeight属性,
  • .net6使用Sejil可视化日志
  • .net连接MySQL的方法
  • /etc/sudoer文件配置简析
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [android] 天气app布局练习