1.列表
1.列表类型之lPush,rpoplpush,lRange2
//lPush从列表左端插入值
$redis->lPush('x', 'abc');
$redis->lPush('x', 'def');
$redis->lPush('y', '123');
$redis->lPush('y', '456');
// rpoplpush()
// 从LIST的最后弹出一个元素,并且把这个元素从目标LIST的顶部(左侧)压入目标LIST
var_dump($redis->rpoplpush('x', 'y'));
// string(3) "abc"
echo "<hr/>";
//lrange key start end 获取列表指定索引范围所有item
var_dump($redis->lRange('x', 0, -1));
// array(1) { [0]=> string(3) "def" }
echo "<hr/>";
var_dump($redis->lRange('y', 0, -1));
// array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
2.列表类型之lInsert
//lInsert() 在列表的前或者后插入
// 当列表不存在时,被视为空列表,不执行任何操作。
//BEFORE前,AFTER后
$redis->lInsert('key1', Redis::AFTER, 'A', 'X');
$res1 = $redis->lRange('key1',0,-1);
var_dump($res1);//array(0) { }
echo "<hr/>";
$redis->lPush('key1', 'A');
$redis->lPush('key1', 'B');
$redis->lPush('key1', 'C');
$redis->lInsert('key1', Redis::BEFORE, 'C', 'X');
$res2 = $redis->lRange('key1', 0, -1);
var_dump($res2);
echo "<hr/>"; //array(4) { [0]=> string(1) "X" [1]=> string(1) "C" [2]=> string(1) "B" [3]=> string(1) "A" }
$redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
$res3 = $redis->lRange('key1', 0, -1);
var_dump($res3); // array(4) { [0]=> string(1) "X" [1]=> string(1) "C" [2]=> string(1) "B" [3]=> string(1) "A" }
3.列表类型之lRem,lRemove
$redis->lPush('k1', 'a');
$redis->lPush('k1', 'b');
$redis->lPush('k1', 'c');
$redis->lPush('k1', 'a');
$redis->lPush('k1', 'a');
/**
* lRem,lRemove,根据参数count的值,移除列表中与VALUE相等的值
* count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
* count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
* count = 0 : 移除表中所有与 VALUE 相等的值。
*/
$res1 = $redis->lRange('k1', 0, -1); //aacba
//去掉2个a
$redis->lRem('k1', 'a', 2);
$res2 = $redis->lRange('k1', 0, -1);
var_dump($res1);
echo "<hr/>";
var_dump($res2); //cba
4.列表类型之rPush,lTrim,listTrim
$redis->rPush('k1','a');
$redis->rPush('k1','b');
$redis->rPush('k1','c');
$res1 = $redis->lRange('k1',0,-1);
dump($res1);
/**
* array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
*/
echo "<hr/>";
// lTrim() listTrim() 截取list中指定范围内的元素
// $redis->lTrim('k1',0,1);
$redis->listTrim('k1',0,1);
$res2 = $redis->lRange('k1',0,-1);
dump($res2);
/**
* array(2) { [0]=> string(1) "a" [1]=> string(1) "b" }
*/
5.列表类型之lRange() lGetRnage()
$redis->rPush('k1','a');
$redis->rPush('k1','b');
$redis->rPush('k1','c');
// lRange() lGetRnage() 获取指定索引值范围内的所有元素
$res = $redis->lRange('k1',0,1);
dump($res);//array(2) { [0]=> string(1) "a" [1]=> string(1) "b" }
echo "<hr/>";
$res1 = $redis->lRange('k1',0,-1);
dump($res1);//array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
echo "<hr/>";
$res2 = $redis->lGetRange('k1',0,-1);
dump($res2); // array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
6.列表类型之lIndex,lSet
$redis->rPush('k1','a');
$redis->rPush('k1','b');
$redis->rPush('k1','c');
// lIndex() 根据索引获取key的值,从0开始
echo $redis->lIndex('k1',0);//a
echo "<hr/>";
// lSet() 根据索引修改值
$redis->lSet('k1',0,'aaaa');
echo $redis->lIndex('k1',0); //aaa
7.列表类型之lPop,rPop
$redis->rPush('key1', 'A');
$redis->rPush('key1', 'B');
$redis->rPush('key1', 'C');
$lp = $redis->lRange('key1',0,-1);
dump($lp);//array(3) { [0]=> string(1) "A" [1]=> string(1) "B" [2]=> string(1) "C" }
echo "<hr>";
// lPop() 移除并返回列表的第一个元素
echo $redis->lPop('key1');// A
echo $redis->lPop('key1');// B
echo $redis->lPop('key1');// C
$lp = $redis->lRange('key1',0,-1);
dump($lp);//array(0) { }
echo "<hr/>";
$redis->rPush('k2', 'a');
$redis->rPush('k2', 'b');
$redis->rPush('k2', 'c');
$rp = $redis->lRange('k2',0,-1);
dump($rp);//array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
echo "<hr/>";
// rPop() 移除并返回列表的最后一个元素
echo $redis->rPop('k2');//c
echo $redis->rPop('k2');//b
echo $redis->rPop('k2');//a
$rp = $redis->lRange('k2',0,-1);
dump($rp);//array(0) { }
8.列表类型之lPush,lPushx,rPush,rPushx
// lPush()将一个或多个值插入列表的左侧或头部
echo $redis->lPush('k1','v1');//1
echo $redis->lPush('k1','v1');//2
echo $redis->lPush('k1','v1');//3
$lp = $redis->lRange('k1',0,-1);
var_dump($lp);//array(3) { [0]=> string(2) "v1" [1]=> string(2) "v1" [2]=> string(2) "v1" }
echo "<hr/>";
// lPushx()将一个或多个值插入已存在的列表的左侧或头部,注意是已存在的列表
// 也就是在已存在的列表追加值
echo $redis->lPushx('x1','x1'); //0
echo $redis->lPushx('x1','x1'); //0
echo $redis->lPushx('k1','k1x1'); //4 因为列表不存在
echo $redis->lPushx('k1','k1x1'); //5 因为列表存在
$lpx = $redis->lRange('x1',0,-1);
$lpx2 = $redis->lRange('k1',0,-1);
var_dump($lpx);//array(0) { }
var_dump($lpx2);//array(5) { [0]=> string(4) "k1x1" [1]=> string(4) "k1x1" [2]=> string(2) "v1" [3]=> string(2) "v1" [4]=> string(2) "v1" }
echo "<hr/>";
// lPush()将一个或多个值插入列表的右侧或底部
echo $redis->Rpush('k2','v2');//1
echo $redis->Rpush('k2','v2');//2
echo $redis->Rpush('k2','v2');//3
$rp = $redis->lRange('k2',0,-1);
var_dump($rp);//array(3) { [0]=> string(2) "v2" [1]=> string(2) "v2" [2]=> string(2) "v2" }
echo "<hr/>";
// rPushx()将一个或多个值插入已存在的列表的右侧或底部,注意是已存在的列表
echo $redis->Rpushx('x2','v2');// 0 因为列表不存在
echo $redis->Rpushx('x2','v2');//0
echo $redis->Rpushx('k2','v2');//4 因为列表存在
echo $redis->Rpushx('k2','v2');//5
$rp1 = $redis->lRange('x2',0,-1);
$rp2 = $redis->lRange('k2',0,-1);
var_dump($rp1);// array(0) { }
var_dump($rp2); //array(5) { [0]=> string(2) "v2" [1]=> string(2) "v2" [2]=> string(2) "v2" [3]=> string(2) "v2" [4]=> string(2) "v2" }
这篇教程详细介绍了如何使用ThinkPHP5框架操作Redis的列表类型,包括lPush、rpoplpush、lRange、lInsert、lRem、rPush、lTrim、lRange、lIndex、lSet、lPop和rPop等方法的使用。
643

被折叠的 条评论
为什么被折叠?



