当前位置: 首页 > 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, 整个过程用户同样无感知.


http://www.mrgr.cn/news/6116.html

相关文章:

  • Centos7安装mysql5.7
  • Redis(day 1)
  • “精准学”官宣将公布中国首个语音端到端大模型
  • Go语言基础--函数基本介绍及包
  • 《黑神话:悟空》发售后快手游戏笔记本电脑GMV日环比增长40%
  • SSH远程管理/TCP Wrappers访问控制
  • 【个人学习】JVM(8): 对象的实例化、内存布局、访问定位
  • Python Lambda 表达式详解
  • 第5章 虚拟机的安装和使用
  • 【国赛】【美赛】【五一杯】【电工杯】【华数杯】【亚太杯】······各赛事历年优秀论文+真题分享
  • Springboot的小区物业管理系统
  • Node.js中的pipe方法:深入解析与应用指南
  • T6:好莱坞明星识别
  • 韩国云主机玩游戏性能怎么样
  • 基于大语言模型的物联网(artificial intelligence of thing)
  • 网络通信tcp
  • 【HTML】模拟插头连接断开动画
  • 线段树的原理
  • Swagger
  • VUE3的computed()使用场景