FWQ
redis专属链表ziplist的使用
redis专属链表ziplist的使用 0浏览 收藏 知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个数据库开发实战,手把手教大家学习《redis专属链表ziplist的使用》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟! 问题抛出 用过 Python 的列表吗?就是那种可以存储任意类型数据的,支持随机读取的数据结构。 没有用过的话那就没办法了。 本质上这种列表可以使用数组、链表作为其底层结构,不知道Python中的列表是以什么作为底层结构的。 但是redis的列表既不是用链表,也不是用数组作为其底层实现的,原因也显而易见:数组不方便,弄个二维的?柔性的?怎么写?链表可以实现,通用链表嘛,数据域放 void* 就可以实现列表功能。但是,链表的缺点也很明显,容易造成内存碎片。 在这个大环境下,秉承着“能省就省”的指导思想,请你设计一款数据结构。 结构设计 这个图里要注意,右侧是没有记录“当前元素的大小”的 这个图挺详细哈,都省得我对每一个字段释义了,整挺好。 其他话,文件开头的注释也讲的很清楚了。(ziplist.c) /* The ziplist is a specially encoded dually linked list…