• Redis 列表( List )


    【一】简介

    单键多值

     Redis 列表是简单地字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

    它的底层实际是创想列表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会比较差。

    ---------------------------------------------------------------------------------------------------------------------------------

    >> v1 >> v2 >> v3 >> v4 >> v5 >> v6 >> v7 >> v8 >> v9 >> v10 >> v11 >> v12 >> v13 >> v14 >>

    << v1 << v2 << v3 << v4 << v5 << v6 << v7 << v8 << v9 << v10 << v11 << v12 << v13 << v14 <<

    ---------------------------------------------------------------------------------------------------------------------------------

    【二】常用命令

     lpush/rpush k v1 v2 v3 ...

    从 左边/右边插入一个或多个值

     lpop/rpop k 从左边/右边吐出一个值。值在键在,值光键亡

     

     rpoplpush k1 k2

    从 k1 列表的右边吐出一个值,插到 k2 列表的右边

     lrange k 0 2

    按照0和2这两个索引获得元素(从左到右)

     lrange k 0 -1

    0代表左边第一个,-1表示最右边第一个

    lindex k 1

    获取 k 中下标为1的元素

    linsert k before v1 v2

    在 k 中 的 v1 后面插入 v2

     lrem k 2 v 

    从左边删除 k 中 的两个 v (从左到右)

     lset key 2 v

    将 k 中下标为2的值替换成value

    【三】数据结构

     List 的数据结构为快速链表 quickList 。

    首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是 ziplist ,也即是压缩列表。

    它将所有的元素紧挨着一起存储,分配的是一块连续的内存。

    当数据量比较多的时候才会改成  quickList 。

    因为普通的链表需要的附加指针空间太大,会比较浪费空间。比如这个列表里存的只是 int 类型的数据,结构上还需要额外的指针 prev 和 next。

      ziplist <<>> ziplist <<>> ziplist <<>> ziplist <<>> ziplist <<>> ziplist <<>> ziplist <<>> ziplist

  • 相关阅读:
    面试又挂了:大厂面试到底更看重学历还是技术?来看看大佬的说法
    顺序表(删除)
    JavaEE——No.2 套接字编程(TCP)
    Apache拦截不安全漏洞
    图书管理系统
    如何解决DNS解析错误
    WEB-Wordlist-Generator:为扫描后的Web应用生成相关联的字典
    总结Kibana DevTools如何操作elasticsearch的常用语句
    MySql事务
    19 螺旋矩阵
  • 原文地址:https://blog.csdn.net/FairyKunKun/article/details/128094425