Redis源码解析(四):redis之数据类型哈希表、列表、集合和有序集合

    哈希表也是redis支持的数据结构之一,它使用REDIS_ENCODING_ZIPLIST(压缩列表) 和REDIS_ENCODING_HT(数据字典) 两种编码方式。

    当哈希表使用压缩列表时,它使用如下的结构存储数据(详见ziplist.c):

+---------+------+------+------+------+------+------+------+------+---------+
| ZIPLIST | | | | | | | | | ZIPLIST |
| ENTRY | key1 | val1 | key2 | val2 | ... | ... | keyN | valN | ENTRY |
| HEAD | | | | | | | | | END |
+---------+------+------+------+------+------+------+------+------+---------+

  当哈希表使用数据字典时,它使用如下的结构存储数据(详见dict.c).

   

   列表也是redis支持的数据结构之一,它使用REDIS_ENCODING_ZIPLIST(压缩列表) 和REDIS_ENCODING_LINKEDLIST (双端列表)这两种方式编码。

  

   集合也是redis支持的数据结构之一,它使用REDIS_ENCODING_INTSET(整数集,intset.c) 和REDIS_ENCODING_HT(数据字典,dict.c) 两种方式编码方式,如果第一个元素可以表示为long long 类型值则使用REDIS_ENCODING_INTSET编码,否则使用REDIS_ENCODING_HT编码。可以对其执行求并交补的操作。

Redis源码解析(四):redis之数据类型哈希表、列表、集合和有序集合_第1张图片

  有序集合(即zset)也是redis支持的数据结构之一,它使用REDIS_ENCODING_ZIPLIST(压缩表) 和REDIS_ENCODING_SKIPLIST(跳跃表,zskiplist) 两种方式编码。它与集合的区别在于在增加了一个score字段来表示顺序。

Redis源码解析(四):redis之数据类型哈希表、列表、集合和有序集合_第2张图片



你可能感兴趣的:(C++学习,JAVA学习)