lpush key value
作用: 把值插入到鏈表(左邊)頭部
<?php
# 將數據一一加入到列表中
$redis->lpush('today_cost', 30);
$redis->lpush('today_cost', 1.5);
$redis->lpush('today_cost', 10);
$redis->lpush('today_cost', 8);
//array(8,10,1.5,30)
rpop key
作用: 返回並刪除鏈表尾元素
<?php
$redis->rpop('today_cost');//30
rpush key value
作用: 把值插入到鏈表(右邊)尾部
<?php
$redis->rpush('today_cost',70);//70
lpop key 不解釋
作用: 返回並刪除鏈表(左邊)頭部
<?php
$redis->lpop('today_cost');
//array(10,1.5,30)
lrange key start stop
作用: 返回鏈表中[start ,stop]中的元素
規律: 左數從0開始,右數從-1開始
如果start下標比列表的最大下標end(LLEN list減去1)還要大,或者start > stop,LRANGE返回一個空列表。
如果stop下標比end下標還要大,Redis將stop的值設置爲end。
<?php
$redis->lrange('today_cost',0,-1);
//array(8,10,1.5,30)
lrem key count value
作用: 從key鏈表中刪除 value值
注: 刪除count的絕對值個value後結束
Count > 0 從表頭刪除
Count < 0 從表尾刪除
<?php
$redis->lPush('key1', 'A');
$redis->lPush('key1', 'B');
$redis->lPush('key1', 'C');
$redis->lPush('key1', 'A');
$redis->lPush('key1', 'A');
$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')
ltrim key start stop
作用: 剪切key對應的鏈接,切[start,stop]一段,並把該段重新賦給key
<?php
$redis->rPush('key1', 'A');
$redis->rPush('key1', 'B');
$redis->rPush('key1', 'C');
$redis->lRange('key1', 0, -1); // array('A', 'B', 'C')
$redis->lTrim('key1', 0, 1);
$redis->lRange('key1', 0, -1); // array('A', 'B')
lindex key index
作用: 返回index索引上的值,
如 lindex key 2
<?php
$redis->rPush('key1', 'A');
$redis->rPush('key1', 'B');
$redis->rPush('key1', 'C'); // key1 => [ 'A', 'B', 'C' ]
$redis->lGet('key1', 0); // 'A'
$redis->lGet('key1', -1); // 'C'
$redis->lGet('key1', 10); // `FALSE`
llen key
作用:計算鏈接表的元素個數
redis 127.0.0.1:6379> llen task
(integer) 3
<?php
$redis->rPush('key1', 'A');
$redis->rPush('key1', 'B');
$redis->rPush('key1', 'C'); // key1 => [ 'A', 'B', 'C' ]
$redis->lLen('key1'); // 3
$redis->rPop('key1');
$redis->lLen('key1'); // 2
linsert key after|before search value
作用: 在key鏈表中尋找’search’,並在search值之前|之後,.插入value
注: 一旦找到一個search後,命令就結束了,因此不會插入多個value
<?php
$redis->delete('key1');
$redis->lInsert('key1', Redis::AFTER, 'A', 'X'); // 0
$redis->lPush('key1', 'A');
$redis->lPush('key1', 'B');
$redis->lPush('key1', 'C');
$redis->lInsert('key1', Redis::BEFORE, 'C', 'X'); // 4
$redis->lRange('key1', 0, -1); // array('A', 'B', 'X', 'C')
$redis->lInsert('key1', Redis::AFTER, 'C', 'Y'); // 5
$redis->lRange('key1', 0, -1); // array('A', 'B', 'X', 'C', 'Y')
$redis->lInsert('key1', Redis::AFTER, 'W', 'value'); // -1
rpoplpush source dest
作用: 把source的尾部拿出,放在dest的頭部,
並返回 該單元值
例:
<?php
$redis->delete('x', 'y');
$redis->lPush('x', 'abc');
$redis->lPush('x', 'def');
$redis->lPush('y', '123');
$redis->lPush('y', '456');
// move the last of x to the front of y.
var_dump($redis->rpoplpush('x', 'y'));//string(3) "abc"
var_dump($redis->lRange('x', 0, -1)); //array(1) {[0]=> string(3) "def"}
var_dump($redis->lRange('y', 0, -1));//array(3) {[0]=> string(3) "abc" [1]=>string(3) "456" [2]=>string(3) "123"}
brpop,blpop key timeout
作用:等待彈出key的尾/頭元素,
Timeout爲等待超時時間
如果timeout爲0,則一直等待
場景: 長輪詢Ajax,在線聊天時,能夠用到
<?php
// Non blocking feature
$redis->lPush('key1', 'A');
$redis->delete('key2');
$redis->blPop('key1', 'key2', 10); // array('key1', 'A')
$redis->blPop(array('key1', 'key2'), 10); // array('key1', 'A')
$redis->brPop('key1', 'key2', 10); // array('key1', 'A')
$redis->brPop(array('key1', 'key2'), 10); // array('key1', 'A')
// Blocking feature
// process 1
$redis->delete('key1');
$redis->blPop('key1', 10);// 阻斷10秒
// process 2
$redis->lPush('key1', 'A');
// process 1
// array('key1', 'A') is returned