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