zoukankan      html  css  js  c++  java
  • 【redis数据结构 – lists】

     

    redis的另一个重要的数据结构叫做lists,翻译成中文叫做“列表”。

    首先要明确一点,redis中的lists在底层实现上并不是数组,而是链表,也就是说对于一个具有上百万个元素的lists来说,在头部和尾部插入一个新元素,其时间复杂度是常数级别的,比如用LPUSH在10个元素的lists头部插入新元素,和在上千万元素的lists头部插入新元素的速度应该是相同的。

    虽然lists有这样的优势,但同样有其弊端,那就是,链表型lists的元素定位会比较慢,而数组型lists的元素定位就会快得多。

    lists的常用操作包括LPUSH、RPUSH、LRANGE等。我们可以用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素。我们来看几个例子:
    代码如下:

    //新建一个list叫做mylist,并在列表头部插入元素"1"
    127.0.0.1:6379> lpush mylist "1"
    //返回当前mylist中的元素个数
    (integer) 1
    //在mylist右侧插入元素"2"
    127.0.0.1:6379> rpush mylist "2"
    (integer) 2
    //在mylist左侧插入元素"0"
    127.0.0.1:6379> lpush mylist "0"
    (integer) 3
    //列出mylist中从编号0到编号1的元素
    127.0.0.1:6379> lrange mylist 0 1

    1. "0"
    2. "1"
      //列出mylist中从编号0到倒数第一个元素
      127.0.0.1:6379> lrange mylist 0 -1
    3. "0"
    4. "1"
    5. "2"
      lists的应用相当广泛,随便举几个例子:

    1.我们可以利用lists来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序。
    2.利用LRANGE还可以很方便的实现分页的功能。
    3.在博客系统中,每片博文的评论也可以存入一个单独的list中。

  • 相关阅读:
    XVI Open Cup named after E.V. Pankratiev. GP of Ekaterinburg.
    2017 Multi-University Training Contest
    spring IOC快速入门,属性注入,注解开发
    hibernate注解开发,三种查询语句
    hibernate主键生成策略,一级缓存,一对多关系配置
    struts2值栈,OGNL表达式,interceptor
    Oracle基础进阶
    Oracle基础
    mysql和Oracle的简单比较
    Linux的基础命令
  • 原文地址:https://www.cnblogs.com/xujing0808/p/14234310.html
Copyright © 2011-2022 走看看