zoukankan      html  css  js  c++  java
  • redis 基本数据类型-列表(List)

    今天不瘦给大家分享一下redis第二个基本数据类型:列表。如果大家了解基本数据结构,相信大家对列表不会陌生,比如在C语言中我们可以使用数组实现一个列表,也可以使用链表实现一个列表(列表链表傻傻分不清楚,列表是一种抽象数据类型,链表为一种实现方式)。

    言归正传,那redis是怎么实现列表的呢?答案是:双端双向无环链表(原谅我给起了一个这么复杂的名字,也有人直接叫双端链表)借用《redis设计与实现》中一图

    为什么这样设计呢?主要有如下优点:

    • 双向:获取前置节点和后置节点的时间复杂度都为O(1)
    • 首尾两个指针:从头和尾取元素时间复杂度都为O(1),从redis同时提供列表两端的操作命令也得到了印证(lpop和rpop等)
    • 无环: 有环链表会导致某些操作变复杂,且应用场景有局限性
    • 长度计数器:使获取列表长度的时间复杂度为O(1),又是以空间换时间思想的体现

    注意事项:

    一个列表最多可以包含 232 - 1 个元素

    redis列表定义为字符换列表,但是基于的双端双向循环列表并没有限定每个节点value的类型

    参考:

    《Redis设计与实现》 

    https://redis.io/topics/data-types

    这里是老瘦家的儿子,如需转载请声明,我替老瘦感谢你。

  • 相关阅读:
    PAXOS: libevent_paxos
    R提高篇(五): 描述性统计分析
    R提高篇(四): 数据管理二
    R提高篇(三): 数据管理一
    锂电池知识
    R提高篇(二): 图形初阶
    R提高篇(一): 输入输出
    动力电池基本知识篇
    DW(六):polybase访问Azure Blob Storage
    DW(五):polybase集群安装
  • 原文地址:https://www.cnblogs.com/art-geek/p/10146922.html
Copyright © 2011-2022 走看看