redis 的列表允許用戶從序列的兩端推入或者彈出元素,獲取列表元素,以及執行各種常見的列表操作,這里介紹一些常用的列表處理命令,并在 Yii 中的使用。
RPUSH
> RPUSH:RPUSH key-name value \[value …\]
> 將一個或多個值推入列表的右端(尾部)
LPUSH
> LPUSH:LPUSH key-name value \[value …\]
> 將一個或多個值推入列表的左端(頭部)
LLEN
> LLEN:LLEN key-name
> 獲取列表長度
RPOP
> RPOP:RPOP key-name
> 移除并返回列表最右端的元素
LPOP
> LPOP:LPOP key-name
> 移除并返回列表最左端的元素
LINDEX
> LINDEX:LINDEX key-name offset
> 返回列表中偏移量為 offset 的元素
LRANGE
> LRANGE:LRANGE key-name start end
> 返回列表從 start 偏移量到 end 偏移量范圍內的所有元素,其中偏移量為 start 和偏移量為 end 的元素也會包含在被返回的元素之內。其中 0 表示列表的第一個元素, 1表示列表的第二個元素,以此類推。 也可以使用負數下標,以 -1 表示列表的最后一個元素, -2 表示列表的倒數第二個元素,以此類推。
LTRIM
> LTRIM:LTRIM key-name start end
> 對列表進行修剪,只保留從 start 偏移量到 end 偏移量范圍內的元素,其中偏移量為 start 和偏移量為 end 的元素也會被保留。
BLPOP
> BLPOP:BLPOP key-name \[key-name …\] timeout
> 從第一個非空列表中彈出位于最左端的元素,或者在 timeout 秒之內阻塞并等待可彈出的元素出現。
BRPOP
> BRPOP:BRPOP key-name \[key-name …\] timeout
> 從第一個非空列表中彈出位于最右端的元素,或者在 timeout 秒之內阻塞并等待可彈出的元素出現。
RPOPLPUSH
> RPOPLPUSH:RPOPLPUSH source-key dest-key
> 從 source-key 列表中彈出位于最右端的元素,然后將這個元素推入 dest-key 列表的最左端,并向用戶返回這個元素。
BRPOPLPUSH
> BRPOPLPUSH:BRPOPLPUSH source-key dest-key timeout
> 從 source-key 列表中彈出位于最右端的元素,然后將這個元素推入 dest-key 列表的最左端,并向用戶返回這個元素;如果 source-key 為空,那么在 timeout 秒之內阻塞并等待可彈出的元素出現。
**在 Yii 中使用實例:**
```
// 將一個或多個值推入列表的右端(尾部)
Yii::$app->redis->rpush('listKey', 'aaa');
Yii::$app->redis->rpush('listKey', 'bbb', 'ccc', 'ddd');
// 將一個或多個值推入列表的左端(頭部)
Yii::$app->redis->lpush('listKey', 'eee', 'fff');
// 獲取列表長度
Yii::$app->redis->llen('listKey'); // 6
// 返回列表的所有元素
Yii::$app->redis->lrange('listKey', 0, -1); // ["fff","eee","aaa","bbb","ccc","ddd"]
// 移除并返回列表最右端的元素
Yii::$app->redis->rpop('listKey'); // ddd
// 移除并返回列表最左端的元素
Yii::$app->redis->lpop('listKey'); // fff
```