• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Redis数组和链表深入详解
    POST TIME:2021-10-18 23:35

    1.数组和链表基础知识

    数组
    数组会在内存中开辟一块连续的空间存储数据,这种存储方式有利也有弊端。当获取数据的时候,直接通过下标值就可以获取到对应的元素,时间复杂度为O(1)。但是如果新增或者删除数据会移动大量的数据,时间复杂度为O(n)。数组的扩容机制是:如果数组空间不足,会先开辟一块新的空间地址,将原来的数组复制到新的数组中。

    链表
    链表不需要开辟连续的内存空间,其通过指针将所有的数据连接起来。新增或者删除的时候只需要将指针指向的地址修改就行了,时间复杂度为O(1)。但是查询的时间复杂度为O(n)。

    2、链表

    2.1、双向链表

    双向链表是各个节点之间的逻辑关系是双向的。
    双向链表中节点的组成是:prior: 指向当前节点的前置节点,data:当前节点存储的数据。next:指向当前节点的后置节点。

    2.2、压缩链表

    2.3、quicklist链表

    A doubly linked list of ziplists
    A generic doubly linked quicklist implementation

    quicklist是一个双向链表,并且是一个ziplist的双向链表,ziplist本身是一个维持数据项先后顺序的列表,而且数据项保存在一个连续的内存块种。

    3、对比

    3.1、双向链表

    3.2、压缩列表

    3.3、quicklist链表

    4、总结

    在redis 3.2版本之前使用的是 双向链表和压缩链表 两种,因为双向链表占用的内存要比压缩链表高,所以创建链表时首先会创建压缩链表,在合适的时机会转化成双向链表。redis 3.2之后使用的是quicklist链表。

    到此这篇关于Redis数组和链表深入详解的文章就介绍到这了,更多相关Redis数组和链表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python实现队列的方法示例小结【数组,链表】
    • Python实现栈的方法详解【基于数组和单链表两种方法】
    • JavaScript将数组转换为链表的方法
    • 使用python实现数组、链表、队列、栈的方法
    • php数组和链表的区别总结
    • java使用数组和链表实现队列示例
    • 两路归并的数组与链表的实现方法
    上一篇:hiredis从安装到项目实战操作
    下一篇:Redis持久化深入详解
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信