Redis系列-儲存篇list主要操作函數小結(轉)

來源:互聯網
上載者:User

標籤:

在總結list之前,先要弄明白幾個跟list相關的概念:

列表:一個從左至右的隊列,個人理解更類似於一個棧,常規模式下,先進列表的元素,後出。

表頭元素:列表最左端第一個元素。

表尾元素:列表最右端的最後一個元素。不包含任何元素的列表成為空白列表。

1)新增

a)lpush

文法:lpush key value[value]

解釋:把一個或多個元素插入表頭。如果是多個value時,按照從左至右的次序插。返回插入元素的個數

[plain] view plaincopy
  1. [[email protected] ~]# 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

Redis系列-儲存篇list主要操作函數小結(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.