Redis的对象类型及其编码方式

2023-09-19 10:09:31 浏览数 (1)

建议先关注、点赞、收藏后再阅读。

Redis的对象类型有以下几种:

1. 字符串类型(string):

存储字符串,通常被用作缓存、计数器等。字符串类型的编码方式有raw、int、embstr和embstr_moved。

  • raw:存储的字符串可以是任意字符。
  • int:将字符串当作整数来存储,当字符串可以被解析为整数时使用。
  • embstr:如果字符串长度小于等于39字节且不包含''字符,则使用这种方式存储。
  • embstr_moved:占位编码,表示该对象所存储的字符串已被迁移到其他地方。

2. 列表类型(list):

由多个字符串组成的有序列表。列表类型的编码方式有ziplist和linkedlist。

  • ziplist:压缩列表,将多个字符串按一定格式连续存储在一起,节省内存。
  • linkedlist:双向链表,每个节点存储一个字符串。

3. 哈希类型(hash):

键值对集合,其中每个键都是唯一的。哈希类型的编码方式有zipmap和hashtable。

  • zipmap:压缩字典,将键值对按一定格式连续存储在一起,兼具压缩和速度优势。
  • hashtable:字典,使用哈希表实现。

4. 集合类型(set):

无序的字符串集合,不允许重复元素。集合类型的编码方式有intset和hashtable。

  • intset:整数集合,当集合中的元素都为整数且个数不超过512时使用。
  • hashtable:字典,使用哈希表实现。

5. 有序集合类型(sorted set):

有序的字符串集合,不允许重复元素,每个元素关联一个分数。有序集合类型的编码方式有ziplist和skiplist。

  • ziplist:压缩列表,将元素和分数按一定格式连续存储在一起。
  • skiplist:跳跃表,同时使用有序链表和多层索引的数据结构。

Redis对象的共享结构和非共享结构如下:

  • 共享结构: 字符串类型的编码方式为int和embstr时,Redis对象采用共享结构。多个对象可以共享同一个字符串值,以节省内存。当有被引用的字符串被修改时,会进行复制操作。
  • 非共享结构: 其他类型的对象和字符串类型的编码方式为raw和embstr_moved时,Redis对象采用非共享结构。每个对象都保存自己的值,修改不会影响到其他对象。

以上就是Redis的对象类型及其编码方式,以及Redis对象的共享结构和非共享结构的介绍。

0 人点赞