初识redis的编码方式

使用type命令返回的是当前key对应的value的数据结构类型,例如:string(字符串), list(列表),hash(哈希),set(集合),zset(有序集合)。这些只是redis对外的数据结构,

而redis针对每种数据结构都有自己的底层内部编码实现,而且是多种实现,这样redis会在合适的场景选择合适的内部编码。

:::info

数据结构:value的数据类型

编码方式:底层实现value这种数据结构的方式

:::
Redis数据结构和内部编码

  1. string类型
    1. 当value是一个整数时,此时redis会直接使用int来保存
    2. 当value字符串长度较短时,string的底层是embstr
    3. 当string字符串较长时,string底层采用raw(在java中就是byte数组)
  2. hash类型
    1. hashtable就是哈希表,注意不是java标准库中的hashtable
    2. ziplist压缩列表,当哈希表中元素较少时优化成ziplist,节省空间。
      1. 为什么需要压缩:redis上有很多很多的key,某些key对应的value类型是hash,如果key非常多,对应的hash也特别多,但是每个hash又不大的情况下,就去压缩,让整体占用的内存更小。
  3. list类型
    1. linkedlist就是链表
    2. ziplist压缩列表
    3. 在redis3以后采用quicklist,同时兼顾linkedlist和ziplist的优点,quicklist是一个链表,链表上每个节点又是一个ziplist,把空间和效率都兼顾到。
  4. set类型
    1. hashtable哈希表
    2. intset集合里存的都是整数
  5. zset类型
    1. skiplist 跳表也是链表,不同的地方是,每个节点上有多个指针域,巧妙的搭配这些指针域的指向,能做到查询元素的时间复杂度是O(logN)
    2. ziplist压缩列表

咱们可以通过object encoding key命令查询value的内部编码

相关推荐
Metaphor69215 分钟前
使用 Python 给 PDF 设置背景色或背景图
数据库·python·pdf
Gauss松鼠会16 分钟前
【GaussDB】GaussDB重要通信参数汇总
服务器·网络·数据库·sql·性能优化·gaussdb·经验总结
睡不醒男孩03082331 分钟前
第五篇:2026年企业级 PostgreSQL 高可用方案深度横评:Patroni vs. CLup 架构与可靠性全面对决
数据库·postgresql·架构
NineData31 分钟前
SQL 都在等锁时,ChatDBA 先帮 MySQL 找到谁在挡路
数据库·人工智能·sql·mysql·安全·数据复制·数据迁移工具
超级无敌zhq32 分钟前
后渗透痕迹清理:攻防对抗中的隐身术
网络·数据库·网络安全
2601_961845151 小时前
考研网课资源网盘|2027|资料
数据库·vim·sublime text·figma·photoshop·墨刀·高考
Amnesia0_01 小时前
MYSQL复合查询和内外连接
数据库·mysql
Gauss松鼠会1 小时前
【GaussDB】GaussDB SMP特性调优详解
java·服务器·前端·数据库·sql·算法·gaussdb
AI数据皮皮侠1 小时前
全国高考报名、录取数据(1977-2026)
大数据·数据库·人工智能·python·机器学习·高考
JAVA面经实录9171 小时前
Redis 知识体系(完整版)
java·redis·nosql数据库·nosql