• MINI车联网服务3月起升级至4G网络 增加新功能 2018-02-18
  • 以色列警方:已有足够的证据可以用于起诉以总理 2018-02-18
  • 冬奥会短节目第四 金博洋:伤病令我更强大 2018-02-18
  • 天津市北辰区委书记冯卫华:强化政治担当 把主体责任落实落细 2018-02-17
  • 正月初一客流继续回落 全国铁路预计发送旅客389万人次 2018-02-17
  • 送别余光中:诗人虽远行,乡愁永流传 2018-02-17
  • 集团原董事长违纪被查 人员伤亡事故频发 湖北宜化:去年亏损额超过公司市值 2018-02-17
  • 图片故事:“六个人”的火车站 2018-02-16
  • 【马来西亚房产】雅诗阁之星十年包租可续租! ——凤凰网房产马来西亚 2018-02-16
  • 大量顺差在中国,多数利润归美国 2018-02-16
  • 河北今年将削减煤炭消费500万吨 2018-02-16
  • 开创生态文明新时代 绘出美丽中国新图景 2018-02-15
  • 以色列警方:已有足够的证据可以用于起诉以总理 2018-02-15
  • 山东求败让辽篮意外受益 与所在半区其他四队常规赛战绩为7胜1负 2018-02-15
  • 春节期间乌鲁木齐电力营业厅每天11时至14时30分营业 2018-02-14
  • Redis系列-存储篇list主要操作函数小结

    栏目: redis 发布于: 2014-01-19 12:57:34

    列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出。

    表头元素:列表最左端第一个元素。

    表尾元素:列表最右端的最后一个元素。不包含任何元素的列表成为空列表。

    1)新增

    a)lpush

    语法:lpush key value[value]

    解释:把一个或多个元素插入表头。如果是多个value时,按照从左到右的次序插。返回插入元素的个数

    [root@xsf001 ~]# redis-cli
    redis 127.0.0.1:6379> lpush lst.user zhangsan   #插入一个元素
    (integer) 1
    redis 127.0.0.1:6379> lpush lst.user zhangsan lisi   #插入多个元素,list中允许插入重复的元素
    (integer) 3
    b)lpushx

    语法:lpushx key value

    解释:插入一个表头元素,当且仅当列表key存在时,才能插入。返回列表中元素的个数

    redis 127.0.0.1:6379> lpushx lst.user wangwu   #列表存在
    (integer) 4
    redis 127.0.0.1:6379> lpushx lst.tech wangwu   #列表不存在,不插入
    (integer) 0
    c)rpush

    语法:rpush key [value]

    解释:将一个或多个值插入到队列的队尾。多值时,从左到右依次添加。返回列表中元素个数

    redis 127.0.0.1:6379> rpush lst.user ls005     #列表存在
    (integer) 5
    redis 127.0.0.1:6379> rpush lst.tech tec01 tec02 tec03  #列表不存在
    (integer) 3
    d) rpushx

    语法:rpushx key value

    解释:讲值插入到列表队尾,当且仅当列表key存在时,才添加。返回列表元素个数

    redis 127.0.0.1:6379> rpushx lst.tech tec04  #key 存在
    (integer) 4
    redis 127.0.0.1:6379> rpushx lst.sub englist #key 不存在
    (integer) 0
    e)linsert

    语法:linsert key before|after pivot value

    解释:将值插入到pivot的前面或后面。返回列表元素个数。如果参照点pivot不存在不插入。如果有多个pivot,以离表头最近的为准

    redis 127.0.0.1:6379> linsert lst.tech after tec04 tec06  #后面插
    (integer) 5 
    redis 127.0.0.1:6379> linsert lst.tech before tec06 tec05 #前面插
    (integer) 6 
    redis 127.0.0.1:6379> linsert lst.tech before tec08 tec07 #参照点不存在,不插
    (integer) -1
    redis 127.0.0.1:6379> linsert lst.user after zhangsan zhangsan01  #列表中有多个pivot,以从左到右的第一个为准
    (integer) 6
    
    2)查询

    a)lindex

    语法:lindex key index

    解释:通过索引index获取列表的元素。 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推

    redis 127.0.0.1:6379> lindex lst.user 0  #表头
    "wangwu" 
    redis 127.0.0.1:6379> lindex lst.user -1 #表尾
    "ls005"
    redis 127.0.0.1:6379> lindex lst.user 2 #第三个元素
    "zhangsan"
    redis 127.0.0.1:6379> lindex lst.user -2 #倒数第二个元素
    "zhangsan"
    b)lrange

    语法:lrange key start stop  

    解释:获取指定开始和结束范围的一些列元素。0:表头,-1:表尾。如果stop指定的元素在start的左边,返回空列表

    redis 127.0.0.1:6379> lrange lst.user 0 -1 #返回所有
    1) "wangwu"
    2) "lisi"
    3) "zhangsan"
    4) "zhangsan01"
    5) "zhangsan"
    6) "ls005"
    redis 127.0.0.1:6379> lrange lst.user -1 0  #返回空
    (empty list or set)
    redis 127.0.0.1:6379> lrange lst.user 1 2  #返回多个
    1) "lisi"
    2) "zhangsan"
    redis 127.0.0.1:6379> lrange lst.user 1 1   #返回一个元素
    1) "lisi"
    3)修改

    lset

    语法:lset key index value

    解释:设置列表指定索引的值,如果指定索引不存在则报错

    redis 127.0.0.1:6379> lset lst.user 2 zhangsan1  #设置第三个元素为zhangsan1
    OK
    redis 127.0.0.1:6379> lrange lst.user 0 -1
    1) "wangwu"
    2) "lisi"
    3) "zhangsan1"
    4) "zhangsan01"
    5) "zhangsan"
    6) "ls005"
    redis 127.0.0.1:6379> lset lst.user 6 ls006  #指定索引不存在
    (error) ERR index out of range
    4)删除

    a)ltrim

    语法:ltrim key start stop

    解释:保留指定区域的元素,其他元素全部删除

    redis 127.0.0.1:6379> ltrim lst.user 0 -2
    OK
    redis 127.0.0.1:6379> lrange lst.user 0 -1
    1) "wangwu"
    2) "lisi"
    3) "zhangsan1"
    4) "zhangsan01"
    5) "zhangsan"
    b)lrem

    语法:lrem key count value

    解释:移除等于value的元素,当count>0时,从表头开始查找,移除count个;当count=0时,从表头开始查找,移除所有等于value的;当count<0时,从表尾开始查找,移除|count| 个。

    redis 127.0.0.1:6379> lrange lst.user 0 -1
     1) "zhangsan"
     2) "wangwu"
     3) "lisi"
     4) "zhangsan1"
     5) "zhangsan01"
     6) "zhangsan"
     7) "lisi"
     8) "zhangsan"
     9) "lisi"
    10) "zhangsan"
    redis 127.0.0.1:6379> lrem lst.user 2 zhangsan #移除前两个zhangsan
    (integer) 2
    redis 127.0.0.1:6379> lrange lst.user 0 -1
    1) "wangwu"
    2) "lisi"
    3) "zhangsan1"
    4) "zhangsan01"
    5) "lisi"
    6) "zhangsan"
    7) "lisi"
    8) "zhangsan"
    redis 127.0.0.1:6379> lrange lst.user -1 zhangsan #移除最后一个zhangsan
    (empty list or set)
    redis 127.0.0.1:6379> lrange lst.user 0 -1
    1) "wangwu"
    2) "lisi"
    3) "zhangsan1"
    4) "zhangsan01"
    5) "lisi"
    6) "zhangsan"
    7) "lisi"
    redis 127.0.0.1:6379> lrem lst.user 0 lisi  #移除所有lisi
    (integer) 3
    redis 127.0.0.1:6379> lrange lst.user 0 -1
    1) "wangwu"
    2) "zhangsan1"
    3) "zhangsan01"
    4) "zhangsan"
    redis 127.0.0.1:6379> 
    c)rpop

    语法:rpop key

    解释:移除并返回表尾元素

    redis 127.0.0.1:6379> rpop lst.user
    "zhangsan"
    d)lpop

    语法:lpop key

    解释:移除并返回表尾元素

    redis 127.0.0.1:6379> lpop lst.user
    "wangwu"
    5)其他
    a)llen

    语法:llen key

    解释:获取列表长度

    redis 127.0.0.1:6379> llen lst.user
    (integer) 2

    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:Redis系列-存储篇list主要操作函数小结
    IT技术书籍推荐:
    深入PHP:面向对象、模式与实践(第3版)
    深入PHP:面向对象、模式与实践(第3版)
    Mart Zandstra (作者), 陈浩 (译者), 吴孙滨 (译者), 胡丹 (译者), 李静 (译者)
    《深入PHP:面向对象、模式与实践(第3版)》是PHP专家经典力作的最新版本。书中主要介绍了如何使用面向对象技术和设计模式编写稳定的、可维护的代码,如何使用Subversion管理多个开发人员,如何使用Phing和PEAR进行构建和安装,以及将构建和测试过程自动化的策略,包括持续集成?!渡钊隤HP:面向对象、模式与实践(第3版)》适合中高级PHP程序员阅读。