摘要:
整数集合是集合键的底层实现之一,当一个集合只包含整数元素,并且这个集合的元素不多的时候就会选择使用整数集合来存储。 整数数组的结构相对简单一点,只有三个成员变量,encoding编码方式,length表示数组中的元素长度,contents[]用来存放整数数组。要注意的是因为是整数了所以在放入的时候是 阅读全文
摘要:
跳跃表是一个有序的数据结构,跳跃是通过在当前节点存储多个其他节点的指针,来达到跳跃的目的。它支持平均O(LogN)、最差O(N)复杂度的节点查找,还可以通过顺序性来批量处理节点。在大部分情况下,跳跃表的效率和平衡树是一样的,但是逻辑上比平衡树更加简单。 Redis通过跳跃表实现有序集合键的底层实现之 阅读全文
摘要:
字典又可以叫做符号表,关联数组,以及映射(map),是一种键值对的抽象数据结构。 在字典中,每一个key都是独一无二的。Redis属于KV类型的NOSQL,很大一部分原因就是它的KV设计太符合缓存这一概念了。 例如之前的 set msg "111",这种操作,虽然"111"最后是使用SDS进行存储的 阅读全文
摘要:
由于C语言总没有链表这玩意所以Redis自己实现了一个链表。链表的好处就不用多说了,和数组配合是一对雌雄双股剑。 链表在Redis中的应用非常广泛,比如列表键的底层实现之一就是链表,列表中的元素很多,又基本都是长字符串的时候,就会使用到链表这一结构。 integers列表键的底层实现就是一个链表,链 阅读全文