List是簡單的字符串列表,按照插入順序排序,能夠從列表的兩頭添加數據,一個列表最多能夠包含2^32-1個元素(超過40億個元素)php
命令 | 命令描述 | 實例 |
---|---|---|
LPUSH key value1 [value2] | 此命令將一個或多個值插入到列表的頭部;若是列表不存在,則建立一個空列表,而後執行LPUSH操做;若是有錯誤則返回一個錯誤,成功返回列表的長度 | LPUSH list1 "foo" 返回:1;LPUSH list1 "hear":返回2 |
LPUSHX key value | 將值value插入到列表key的頭部,若列表不存在時操做無效,插入失敗;成功則返回列表的長度 | LPUSHX list1 "head";LRANGE list1 0 -1,返回:「head」,‘hear’,‘foo’ |
RPUSH key value1 [value2] | 添加一個或多個值到列表尾部,若是key不存在則先建立空列表,而後執行RPUSH操做,成功則返回列表長度 | RPUSH list1 'foot';LRANGE list1 0 -1,返回:「head」,‘hear’,‘foo’,‘foot’ |
RPUSHX key value | 將value值插入到已存在的列表key的尾部,若是列標配key不存在,則操做無效,插入失敗;存在則返回列表的長度 | RPUSHX list1 'jkl';獲取列表的值jkl在列表尾部 |
LPOP key | 移除列表key的第一個元素,並返回該元素 | LPOP list1,返回‘head’;LRANGE list1 0 -1,返回:‘hear’,‘foo’,‘foot’,‘jkl’ |
RPOP key | 移除列表的最後一個元素,並返回該元素 | RPOP list1,返回:‘jkl’;LRANGE list1 0 -1,返回:‘hear’,‘foo’,‘foot’ |
BLPOP key1 [key2] timeout | 移出並獲取列表的第一個元素,若是列表沒有元素則會阻塞列表,直到等待時間超時或有元素可彈出爲止。若是列表爲空,則返回nil;不然返回一個含有兩個元素的列表,第一個元素是被彈出的元素的key,另外一個是被彈出元素的值。若是有多個key,則返回第一個非空列表的頭元素;若是全部列表爲空或者不存在,則會阻塞列表,直到等待時間超時或有列表不爲空爲止 | BLPOP list1 100,返回"list1", "hear";BLPOP list2 30,返回nil,30.52s; |
BRPOP key1 [key2 ] timeout | 和BLPOP相似,只不過是移出最後一個元素 | BRPOP list1 100,返回"list1", "kui";BLPOP list1 30,返回nil,30.58s; |
LLEN key | 返回列表的長度;若是列表key不存在,則列表key被認爲是空列表,返回0;若是key不是列表類型,則返回一個錯誤 | LLEN list1,返回1 |
LRANGE key start stop | 返回列表中指定區間的元素,區間以偏移量start和stop指定;0表示第一個元素,以此類推下去;也能夠用負數表示,-1表示最後一個元素,以此類推下去 | LRANGE list1 0 -1,取得列表的全部值; |
LREM key count value | 根據參數count的值,移除列表中與參數value值相同的元素;count > 0:從表頭向表尾搜索,移除count個與value值相同的元素;count < 0:從表尾向表頭搜索,移除count的絕對值個與value值相同的元素;count = 0:移除表中全部與value相同的值;成功返回移除元素的個數,失敗則返回0 | LREM list1 2 'ipo';返回:2 |
LSET key index value | 經過索引設置元素的值;當索引參數超出範圍或者對一個空列表進行LSET操做,返回一個錯誤,操做成功,返回「OK」 | LSET list1 0 'lpt',返回Ok,將索引爲0的值設爲「lpt」 |
LTRIM key start stop | 對一個列表進行修剪(trim),只留下指定區間內的元素,不在指定區間的元素都將被刪除;索引0表示第一個元素,以此類推;最後一個元素的索引爲-1,以此類推。執行成功返回「OK」 | LTRIM list1 1 2,返回「ok」 |
LINDEX key index | 經過索引獲取元素的值,索引0表示第一個元素,以此類推;-1表示最後一個元素,以此類推;index在列表的區間內則返回該索引對應的值,不在列表的區間內則返回nil | LINDEX list1 9;返回:nil |
LINSERT key BEFORE(AFTER) pivot value | 在列表的元素前或者後面插入元素,當指定元素不存在列表中是,不作任何操做,返回 -1;當列表不存在時,視爲空列表,不執行任何操做,返回 0;若是key不是列表類型,返回一個錯誤;執行成功將value插入到元素pivot的前面或者後面,並返回插入後列表的長度;若是存在多個pivot ,則在第一個pivot 值的前或者後面插入value | LINSERT list1 before 'tip' 'mnb';返回6 |
BRPOPLPUSH source destination timeout | 從列表source 中彈出一個元素,將彈出的元素插入到另一個列表destination 中,並返回這個元素;若是列表中不存在元素,則會阻塞列表直到有可彈出元素或者等待超時;若是指定時間內沒有任何元素彈出,則返回一個nil和等待時長;反之,則返回一個含有兩個元素的列表,第一個元素是彈出的元素,另外一個元素是等待時長 | BRPOPLPUSH list1 list2 40;返回:「tip」 |
RPOPLPUSH source destination | 移除source 列表的最後一個元素,並將元素寫入到destination列表中,並返回這個元素 | RPOPLPUSH list1 list2 |
php $redis->lPush('list1', 'bnk');
php $redis->lPushx('list1', 'ujn');
php $redis->rPush('list1', 'lgh');
php $redis->rPushX('list1', 'lfr');
php $redis->lPop('list1');
php $redis->rPop('list1');
php $redis->blPop('key1', 'key2', 10); /* array('key1', 'A') */ $redis->blPop(array('key1', 'key2'), 10); /* array('key1', 'A') */
php $redis->lSize('key1');/* 3 */$redis->lLen('key1');/* 3 */
php $redis->lRange('key1', 0, -1); /* 返回列表中全部的元素 */
php $redis->lRange('key1', 0, -1); /* array('A', 'A', 'C', 'B', 'A') */ $redis->lRem('key1', 'A', 2); /* 2 */ $redis->lRange('key1', 0, -1); /* array('C', 'B', 'A') */
php $redis->lSet('key1', 0, 'X');
php $redis->lRange('key1', 0, -1); /* array('A', 'B', 'C') */ $redis->lTrim('key1', 0, 1); $redis->lRange('key1', 0, -1); /* array('A', 'B') */
php $redis->lGet('key1', 0); /* 'A' */ $redis->lGet('key1', -1); /* 'C' */ $redis->lGet('key1', 10); /* `FALSE` */
php $redis->lInsert('key1', Redis::BEFORE, 'C', 'X'); /* 4 */ $redis->lInsert('key1', Redis::AFTER, 'W', 'value'); /* -1 */
php $redis->lPush('x', 'abc'); $redis->lPush('x', 'def'); $redis->lPush('y', '123'); $redis->lPush('y', '456'); var_dump($redis->rPopLPush('x', 'y')); /* "abc" */ var_dump($redis->lRange('x', 0, -1)); /* "def" */ var_dump($redis->lRange('y', 0, -1)); /* "abc","456", "123" */