Redis的数据类型和编码方式

时间:2024-10-03 07:35:56

目录

  • 数据类型:
  • 编码方式
    • String:
    • hash:
    • list:
    • set:
    • zset:
  • 通过这个指令可以看到底层实现

在这里插入图片描述

数据类型:

Redis底层实现上述数据结构的时候,会在源码层面,针对上述实现进行优化,来达到节省时间/空间的效果:
Redis向你承诺,我这有一个hash表,你进行查询,插入,删除操作,时间复杂度为O(1)
,但是这个背后的实现不一定就是一个标准的hash表,可能在特定的场景下,使用别的数据结构,但是仍然保证时间复杂度符合承诺!

编码方式

String:

  1. raw:最基本的字符串
  2. int:redis通常可以用来实现“计数”功能:当value就是一个整数int的时候,redis会直接用int来保持
  3. embstr:针对短字符的特殊优化

hash:

  1. hashtable:最基本的哈希表
  2. ziplist:压缩列表,在哈希表里面元素比较小的时候,会压缩为list。它可以节省空间

list:

  1. linklist:链表
  2. ziplist:压缩列表

redis 3.2开始,引入quicklist(一个链表,每一个元素是一个ziplist)把空间和效率能折中的兼顾到

set:

  1. hashtable
  2. intset:集合中都是整数

zset:

  1. skiplist:跳表,也是链表,每个结点上有多个指针域(针对分数,权重)
  2. ziplist

通过这个指令可以看到底层实现

OBJECT encoding [key1]

在这里插入图片描述

redis会自动根据当前的实际情况选择内部的数据结构,自适应的。

相关文章