zoukankan      html  css  js  c++  java
  • redis 五大数据类型之list篇


    1.lpush/lpop/rpop/rpush/lrange

     这里的list就是链表,lpush就是从左往右插入数据,rpush就是从右往左插数据,lrange就是从左往右范围性的取值,pop就是弹出的意思,同理lpop就是从左边弹出一个值,rpop就是从右弹出一个值

    注意lrange是范围性的读取值,pop是弹出,数据弹出后,该list就没有这个值了。

    5 4  3 2 1  

     --  这个就是list01

    1 2  3 4 5  

     --  这个就是list02

    同理lpop rpop

     

    所以可以看出来 redis的list是一个双向的链表

    3.llen

     

    很明显就是用来查看list的长度的,java中的size方法

    4.lindex,按照索引下标获得元素(从上到下)

     --这里就是查看list01 列表中下角标为2的元素是什么,list的角标是从0开始的,所以这里角标为2的地方就是第三个数据就是2

    5.lrem key 删N个value(list remove key)  lrem key count value(就是删除key中的count个value值)

     --删除了list01列表中的2个1值 

    --从这里可以看出lrem 命令删除元素的时候是从左往右遍历出来删除的。

    6.ltrim key 开始index 结束index,截取指定范围的值后再赋值给key

     --这里可以看出 ,是截取list02列表的下角标 1和2的数据重新赋值给了list02

    7.lset key index value(给key列表的下角标为index的赋值value)

     这里就是和lindex相辅相成了  这里就是给list列表中的某个下角标元素赋值

    --当给超出list列表下角标范围赋值的时候,就会error index out of range

    8.rpoplpush 源列表 目的列表(就是从源列表中右边弹出一个数据从左到右的插到目的列表中去)

     

    9.linsert key before/after 值1 值2(这里就是在key列表的值1前面或者后面插入一个值2,这里很明显要从左往右遍历找到值1然后再根据前继或者后继插入值2)

     --这里就是在list01 列表的值为1的地方前面插入vv

    10.性能

    它是一个字符串链表,left、right都可以插入添加;
    如果键不存在,创建新的链表;
    如果键已存在,新增内容;
    如果值全移除,对应的键也就消失了。
    链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。

  • 相关阅读:
    python之Queue
    rebase after merge
    Heroku使用note
    Adapter, Proxy, Decrator, and AOP
    How rackup works
    sonar插件实战
    2012rubyconfchina小记
    Sonar安装使用篇
    sonar原理扩展篇
    javascript 实现拖动效果
  • 原文地址:https://www.cnblogs.com/lanqingzhou/p/9030060.html
Copyright © 2011-2022 走看看