码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-15 01:01:31      阅读:170      评论:0      收藏:0      [点我收藏+]

标签: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编码。可以对其执行求并交补的操作。

技术分享

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

技术分享



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

标签:redis   源码   数据结构   数据类型   

原文地址:http://blog.csdn.net/flashflight/article/details/45049407

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!