zoukankan      html  css  js  c++  java
  • Redis系列-存储篇list主要操作函数小结

        1. 在总结list之前,先要弄明白几个跟list相关的概念:

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

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

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

          1)新增

          a)lpush

          语法:lpush key value[value]

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

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

          b)lpushx

          语法:lpushx key value

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

          [plain] view plaincopy
           
          1. redis 127.0.0.1:6379> lpushx lst.user wangwu   #列表存在  
          2. (integer) 4  
          3. redis 127.0.0.1:6379> lpushx lst.tech wangwu   #列表不存在,不插入  
          4. (integer) 0  
          c)rpush

          语法:rpush key [value]

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

          [plain] view plaincopy
           
          1. redis 127.0.0.1:6379> rpush lst.user ls005     #列表存在  
          2. (integer) 5  
          3. redis 127.0.0.1:6379> rpush lst.tech tec01 tec02 tec03  #列表不存在  
          4. (integer) 3  
          d) rpushx

          语法:rpushx key value

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

          [plain] view plaincopy
           
          1. redis 127.0.0.1:6379> rpushx lst.tech tec04  #key 存在  
          2. (integer) 4  
          3. redis 127.0.0.1:6379> rpushx lst.sub englist #key 不存在  
          4. (integer) 0  
          e)linsert

          语法:linsert key before|after pivot value

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

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

          a)lindex

          语法:lindex key index

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

          [plain] view plaincopy
           
          1. redis 127.0.0.1:6379> lindex lst.user 0  #表头  
          2. "wangwu"   
          3. redis 127.0.0.1:6379> lindex lst.user -1 #表尾  
          4. "ls005"  
          5. redis 127.0.0.1:6379> lindex lst.user 2 #第三个元素  
          6. "zhangsan"  
          7. redis 127.0.0.1:6379> lindex lst.user -2 #倒数第二个元素  
          8. "zhangsan"  
          b)lrange

          语法:lrange key start stop  

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

          [plain] view plaincopy
           
          1. redis 127.0.0.1:6379> lrange lst.user 0 -1 #返回所有  
          2. 1) "wangwu"  
          3. 2) "lisi"  
          4. 3) "zhangsan"  
          5. 4) "zhangsan01"  
          6. 5) "zhangsan"  
          7. 6) "ls005"  
          8. redis 127.0.0.1:6379> lrange lst.user -1 0  #返回空  
          9. (empty list or set)  
          10. redis 127.0.0.1:6379> lrange lst.user 1 2  #返回多个  
          11. 1) "lisi"  
          12. 2) "zhangsan"  
          13. redis 127.0.0.1:6379> lrange lst.user 1 1   #返回一个元素  
          14. 1) "lisi"  

          3)修改

          lset

          语法:lset key index value

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

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

          a)ltrim

          语法:ltrim key start stop

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

          [plain] view plaincopy
           
          1. redis 127.0.0.1:6379> ltrim lst.user 0 -2  
          2. OK  
          3. redis 127.0.0.1:6379> lrange lst.user 0 -1  
          4. 1) "wangwu"  
          5. 2) "lisi"  
          6. 3) "zhangsan1"  
          7. 4) "zhangsan01"  
          8. 5) "zhangsan"  
          b)lrem

          语法:lrem key count value

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

          [plain] view plaincopy
           
          1. redis 127.0.0.1:6379> lrange lst.user 0 -1  
          2.  1) "zhangsan"  
          3.  2) "wangwu"  
          4.  3) "lisi"  
          5.  4) "zhangsan1"  
          6.  5) "zhangsan01"  
          7.  6) "zhangsan"  
          8.  7) "lisi"  
          9.  8) "zhangsan"  
          10.  9) "lisi"  
          11. 10) "zhangsan"  
          12. redis 127.0.0.1:6379> lrem lst.user 2 zhangsan #移除前两个zhangsan  
          13. (integer) 2  
          14. redis 127.0.0.1:6379> lrange lst.user 0 -1  
          15. 1) "wangwu"  
          16. 2) "lisi"  
          17. 3) "zhangsan1"  
          18. 4) "zhangsan01"  
          19. 5) "lisi"  
          20. 6) "zhangsan"  
          21. 7) "lisi"  
          22. 8) "zhangsan"  
          23. redis 127.0.0.1:6379> lrange lst.user -1 zhangsan #移除最后一个zhangsan  
          24. (empty list or set)  
          25. redis 127.0.0.1:6379> lrange lst.user 0 -1  
          26. 1) "wangwu"  
          27. 2) "lisi"  
          28. 3) "zhangsan1"  
          29. 4) "zhangsan01"  
          30. 5) "lisi"  
          31. 6) "zhangsan"  
          32. 7) "lisi"  
          33. redis 127.0.0.1:6379> lrem lst.user 0 lisi  #移除所有lisi  
          34. (integer) 3  
          35. redis 127.0.0.1:6379> lrange lst.user 0 -1  
          36. 1) "wangwu"  
          37. 2) "zhangsan1"  
          38. 3) "zhangsan01"  
          39. 4) "zhangsan"  
          40. redis 127.0.0.1:6379>   
          c)rpop

          语法:rpop key

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

          [plain] view plaincopy
           
          1. redis 127.0.0.1:6379> rpop lst.user  
          2. "zhangsan"  
          d)lpop

          语法:lpop key

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

          [plain] view plaincopy
           
          1. redis 127.0.0.1:6379> lpop lst.user  
          2. "wangwu"  
          5)其他

          a)llen

          语法:llen key

          解释:获取列表长度

          [plain] view plaincopy
           
          1. redis 127.0.0.1:6379> llen lst.user  
          2. (integer) 2  

          参考:http://redis.io/commands#list

  • 相关阅读:
    PDIUSBD12指令
    (转)USB的VID和PID,以及分类(Class,SubClass,Protocol)
    静态测试
    一种循环buffer结构
    RL78 芯片复位指令
    XModem协议
    位反转的最佳算法
    CCP 协议
    AUTOSAR 架构
    HEX 文件格式
  • 原文地址:https://www.cnblogs.com/kingCpp/p/4648503.html
Copyright © 2011-2022 走看看