一、概述
- redis列表是簡單的字符串列表,按照插入順序排序
- 可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)
- 一個列表最多可以包含2^32-1個元素(每個列表超過40億個元素)。
二、redis列表類型鍵的設置
- 命令名稱:lpush
- 語法:lpush key value [value……]
- 功能:
- 1)將一個或多個值value插入到列表key的表頭。
- 2)如果多個value值,那么各個value值按從左到右的順序依次插入到表頭。
- 3)操作為原子性操作,如果key不存在,一個空列表會被創建並執行lpush操作。
- 返回值:
- 1)執行lpush命令后,列表的長度;如果key不是列表,返回一個錯誤
- 命令名稱:lpushx
- 語法:lpushx key value
- 功能:
- 1)將值value插入到列表key的表頭,當且僅當key存在並且是一個列表。
- 2)和lpush命令相反,當key不存在時,lpushx命令什么也不做。
- 返回值:
- 1)執行lpushx命令后,列表的長度
- 命令名稱:linsert
- 語法:linsert key BEFORE|AFTER pivot value
- 功能:
- 1)將值value插入到列表key當中,位於值pivot之前或之后。
- 2)當pivot不存在於列表key時,不執行任何操作。
- 3)當key不存在時,key被視為空列表,不執行任何操作。
- 返回值:
- 1)如果命令執行成功,返回插入操作完成之后,列表的長度;
- 2)如果沒有找到pivot,返回-1;
- 3)如果key不存在或為空列表,返回0
- 命令名稱:lset
- 語法:lset key index value
- 功能:
- 1)將列表key下標為index的元素的值設置為value。
- 2)當index參數超出范圍,或對一個空列表(key不存在)進行lset時,返回一個錯誤。
- 3)當key不存在時,key被視為空列表,不執行任何操作。
- 返回值:
- 1)操作成功返回ok,否則返回錯誤信息
- 命令名稱:rpush
- 語法:rpush key value [value……]
- 功能:
- 1)將一個或多個值value插入到列表key的尾部。
- 2)如果多個value值,那么各個value值按從左到右的順序依次插入到表尾。
- 3)操作為原子性操作,如果key不存在,一個空列表會被創建並執行rpush操作。
- 返回值:
- 1)執行rpush命令后,列表的長度;
- 2)如果key不是列表,返回一個錯誤
- 命令名稱:rpushx
- 語法:rpush key value
- 功能:
- 1)將值value插入到列表key的表頭,當且僅當key存在並且是一個列表。
- 2)和rpush命令相反,當key不存在時,rpushx命令什么也不做。
- 返回值:
- 1)執行rpushx命令后,列表的長度
三、redis列表類型鍵的查詢
- 命令名稱:lindex
- 語法:lindex key index
- 功能:
- 1)返回列表key中,下標為index的元素,0為第一個元素,-1為最后一個元素。
- 返回值:
- 1)列表中下標為index的元素。
- 2)如果index參數的值不在列表的區間范圍內(out of range),返回nil
- 命令名稱:llen
- 語法:llen key
- 功能:
- 1)返回列表key的長度。
- 返回值:
- 1)如果key不存在,則key被解釋為一個空列表,返回0。
- 2)列表key的長度。
- 命令名稱:lrange
- 語法:lrange key start stop
- 功能:
- 1)返回列表key中指定區間內的元素,區間以偏移量start和stop指定。
- 2)下標(index)參數start和stop都以0為底。
- 3)也可以使用負數下標,以-1表示列表的最后一個元素
- 返回值:
- 1)一個列表,包含指定區間內的元素。
- 2)超出范圍的下標值不會引起錯誤
四、redis列表類型鍵的刪除
- 命令名稱:lpop
- 語法:lpop key
- 功能:
- 1)移除並返回列表key的頭元素
- 返回值:
- 1)列表的頭元素。
- 2)當key不存在時,返回nil
- 命令名稱:lrem
- 語法:lrem key count value
- 功能:
- 1)根據參數count的值,移除列表中與參數value相等的元素。
- 2)count > 0:從表頭開始向表尾搜索,移除與value相等的元素,數量為count;count < 0:從表尾開始向表頭搜索,移除與value相等的元素,數量為count的絕對值;count = 0:移除表中所有與value相等的值
- 返回值:
- 1)被移除元素的數量
- 命令名稱:ltrim
- 語法:ltrim key start stop
- 功能:
- 1)對一個列表進行修剪(trim),也就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除
- 返回值:
- 1)命令執行成功是,返回OK。
- 命令名稱:rpop
- 語法:rpop key
- 功能:
- 1)移除並返回列表key的尾元素
- 返回值:
- 1)列表的尾元素。
- 2)當key不存在時,返回nil
- 命令名稱:rpoplpush
- 語法:rpoplpush source destination
- 功能:
- 1)此命令在一個原子時間內,執行以下兩個動作:將列表source中的最后一個元素(尾元素)彈出,並返回給客戶端;將source彈出的元素插入到列表destination,作為destination列表的頭元素
- 返回值:
- 1)被彈出的元素
五、redis列表類型鍵的阻塞式操作
- 命令名稱:blpop
- 語法:blpop key [key……] timeout
- 功能:
- 1)blpop是列表的阻塞式(blocking)彈出原語,lpop命令的阻塞式版本,當給定列表內沒有任何元素可供彈出的時候,連接將被blpop命令阻塞,知道等待超時或發現可彈出元素為止
- 返回值:
- 1)假如在指定時間內沒有任何元素被彈出,則返回一個nil和等待時長。
- 2)反之,返回一個含有兩個元素的列表,第一個元素是被彈出的元素所屬的key,第二個元素是被彈出的元素的值
- 命令名稱:brpop
- 語法:brpop key [key……] timeout
- 功能:
- 1)brpop除了彈出元素的位置和blpop不同外,其他表現一致
- 返回值:
- 1)假如在指定時間內沒有任何元素被彈出,則返回一個nil和等待時長。
- 2)反之,返回一個含有兩個元素的列表,第一個元素是被彈出的元素所屬的key,第二個元素是被彈出的元素的值
- 命令名稱:brpoplpush
- 語法:brpoplpush source destination timeout
- 功能:
- 1)brpoplpush是rpoplpush的阻塞版本,當給定列表source不為空時,brpoplpush的表現和rpoplpush一樣。
- 2)當列表source為空時,brpoplpush命令將阻塞連接,直到等待超時,或有另一個客戶端對source執行lpush或rpush命令為止。
- 3)超時參數timeout接受一個以秒為單位的數字作為值。超時參數設為0表示阻塞時間可以無限期延長(block indefinitely)
- 返回值:
- 1)假如在指定時間內沒有任何元素被彈出,則返回一個nil和等待時長。
- 2)反之,返回一個含有兩個元素的列表,第一個元素是被彈出的元素所屬的key,第二個元素是被彈出的元素的值