Redis系列(四)、數據類型之列表List

目錄

介紹

命令行模式

應用

棧:先進後出

隊列:先進先出

有限集合

消息隊列


Redis支持五種數據類型:String, Hash, List, Set, ZSet,這個系列介紹一下如何使用這些數據類型,本篇介紹使用命令行模式以及python客戶端對redis進行操作,實際項目的過程中也大多是一模一樣的用法。

相關內容:

Redis系列(一)、CentOS7下安裝Redis6.0.3穩定版

Redis系列(二)、數據類型之字符串String 

Redis系列(三)、數據類型之哈希Hash

------------------------Redis列表類型----------------------

介紹

Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)一個列表最多可以包含 2^32 - 1 個元素 (4294967295, 每個列表超過40億個元素)。

因此也有項目直接使用redis做消息隊列,我們之前介紹filebeat+logstash+redis的時候也使用redis存儲filebeat採集的日誌進redis的列表類型中,由logstash從其中消費,傳送門

 

命令行模式

進入命令行模式:

redis-cli -a password_value

redis-cli -a password_value --raw
--raw 避免中文顯示亂碼

 

help

使用下面的命令查看手冊:

help @list

lpush

從左邊插入元素,從左邊依次追加進棧,先進後出,後進先出:

LPUSH key element [element ...]

lpush mylist 'wyk'
lpush mylist '28' 'csdn' '[email protected]'

rpush

從右邊插入元素,從右邊依次追加進隊列,先進先出,後進後出:

RPUSH key element [element ...]

rpush mylist2 'wyk'
rpush mylist2 '28' 'csdn' '[email protected]'

 

lpushx

與sting類型中的nx類似,只有當list存在時纔會從左邊依次追加元素:

LPUSHX key element [element ...]

 

rpushx

與lpushx類似,只有當list存在時纔會從右邊依次追加元素:

RPUSHX key element [element ...]

linsert

從list中指定的元素的前/後 插入一個新元素:

LINSERT key BEFORE|AFTER pivot element

 

lrem

從列表左側開始移除count個指定的元素,返回刪除的個數:

LREM key count element

lrem mylist2 1 wyk
lrem mylist2 2 new_val
lrem mylist2 3 new_val2

 

lset

根據下標修改元素內容,下標從左邊算起,以0開始:

LSET key index element

ltrim

將原列表截取爲從下標start到下標stop閉區間的列表,即原列表變爲一個第start+1個到第stop+1個元素的列表:

LTRIM key start stop

 

llen

查看列表中元素的個數:

LLEN key

lrange 

根據起止下標查詢列表元素,負數表示從後往前,跟python裏一樣:

LRANGE key start stop

lrange key 0 -1 #表示查看全部元素
lrange key -1 -1 #表示查看最右邊的元素

 

lindex

根據指定的index下標查看列表中的元素,下標從0開始:

LINDEX key index

 

lpop

從左邊消費列表中的元素,消費完之後從列表中刪除:

LPOP key

rpop

從右邊消費列表中的元素,消費完之後從列表中刪除:

RPOP key

rpoplpush

消費列表A的最右邊的元素返回,然後追加到列表B的最左邊:

RPOPLPUSH source destination

RPOPLPUSH List_A List_B

blpop

從列表中左側查詢元素,返回列表的key和左側第一個元素,若所有查詢的列表中都沒有元素,則會阻塞等待至設置的timeout秒之後返回空,若在這期間,這些列表新增了元素,則會立刻消費並返回該元素:

BLPOP key [key ...] timeout

brpop

與blpop類似,區別是brpop從右側消費:

BRPOP key [key ...] timeout

brpoplpush

結合brpop和lpush,阻塞消費並將消費到的元素添加至target列表的最左側:

BRPOPLPUSH source destination timeout

應用

棧:先進後出

lpush + lpop

隊列:先進先出

lpush + rpop

有限集合

lpush + ltrim

消息隊列

lpush + brpop

 

Python客戶端與命令行函數基本上完全一致,篇幅太長因此不再過多的展示。

希望本文對你有幫助,請點個贊鼓勵一下作者吧~ 謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章