thinkphp5操作redis系列教程 ---列表篇

这篇教程详细介绍了如何使用ThinkPHP5框架操作Redis的列表类型,包括lPush、rpoplpush、lRange、lInsert、lRem、rPush、lTrim、lRange、lIndex、lSet、lPop和rPop等方法的使用。

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" }

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值