美文网首页
php redis 扩展类常用操作(4) - list

php redis 扩展类常用操作(4) - list

作者: 行万里路GOGO | 来源:发表于2021-11-28 12:16 被阅读0次

    Redis list 是简单的字符串列表。

    一个列表最多可以包含2的32次方减1个元素(每个列表可存超过40亿个元素)

    列表元素从左向右排列

    1. blPop - 移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
    $redis->lPush('list', 'A');
    $redis->lPush('list', 'B');
    $redis->lPush('list', 'C');
    $rs = $redis->blPop('list', 10);
    // 如果列表为空,等待10秒后 返回空数组; 否则,返回包含2个元素的数组,第一个是被弹出元素所属的 key , 第二个是被弹出元素的值; 
    /* 输出: 
      array(2) {
      [0]=>
      string(4) "list"
      [1]=>
      string(1) "C"
    }
    */
    
    2. brPop - 移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表 直到等待超时或发现可弹出元素为止
    $redis->brPop('list', 10);
    /* 输出
      array(2) { 
       [0]=> string(4) "list" ’
       [1]=> string(1) "A" 
      }
    */
    
    3. brpoplpush - 从列表中取出最后一个元素,并插入到另外一个列表的头部; 如果列表没有元素会阻塞列表 直到等待超时或发现可弹出元素为止
    $rs = $redis->brpoplpush('list', 'list1', 10);
    var_dump($rs);
    /* 输出
    string(1) "B"
    */
    
    4. lindex - 用于通过索引获取列表中的元素
    //下标0 表示列表的第一元素; -1 表示列表的最后一个元素;
    // 如果指定索引值不在列表的区间范围内,返回 false
    $redis->lPush('mylist', 'world', 'hello');
    $redis->lIndex('mylist',0); // 返回 world
    $redis->lIndex('mylist',2); // 返回 false 
    
    
    5. linsert - 在列表的元素前或后插入元素
    $redis->lPush('key1', 'A');
    $redis->lPush('key1', 'B');
    $redis->lPush('key1', 'C');
    
    $redis->lInsert('key1', Redis::BEFORE, 'C', 'X');
    $rs = $redis->lRange('key1', 0, -1);
    var_dump($rs);
    /* 输出
     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');
    $rs = $redis->lRange('key1', 0, -1);
    var_dump($rs);
    /* 输出
     array(5) {
      [0]=>
      string(1) "X"
      [1]=>
      string(1) "C"
      [2]=>
      string(1) "Y"
      [3]=>
      string(1) "B"
      [4]=>
      string(1) "A"
    }
    */
    
    6. lLen - 获取列表长度
    $redis->lLen('key1');
    
    
    7. lPop - 移出并获取列表的第一个元素
     $redis->lPop('key1');
     
    
    8. lPush - 将一个或多个值插入到列表头部
    // 如果 key 不存在,一个空列表会被创建拼执行 lpush 操作;
    // 当 key 存在但不是列表类型时,返回false; 
    $redis->lPush('key1', 'AA');
    
    
    9. lPushx - 将一个值插入到已存在的列表头部
     // 列表存在时,返回当前列表元素个数; 列表不存在时返回 0; 
     // 如果 key 存在且不是列表类型时,返回 false
     $redis->lPushx('key1','CC');
     
    
    10. lRange - 获取列表指定范围内的元素
    // 0 表示列表的第一个元素; -1 表示列表的最后一个元素
    $redis->lRange('key1', 0, -1);
    
    
    11. lRem - 移除列表元素
    // lRem(key, value, count)
    // count > 0: 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 
    // count < 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数据为 count 的绝对值; 
    // count = 0: 移除表中所有与 value 相关的值 
    $redis->lRange('key1', 0, -1);
    $redis->lRem('key1', 'AA', 0);
    $redis->lRange('key1', 0, -1);
    
    
    12. lSet - 通过索引设置列表元素的值
    $redis->lSet('key1', 0, 'bar');
    
    
    13. lTrim - 对一个列表修剪
    // 让列表只保留指定区间内的元素,不在指定区间这内的元素都将被删除
    $redis->rPush('key1', 'A');
    $redis->rPush('key1', 'B');
    $redis->rPush('key1', 'C');
    $rs = $redis->lRange('key1', 0, -1);
    var_dump($rs);
    $redis->lTrim('key1', 0, 1);
    $rs = $redis->lRange('key1',0,-1);
    var_dump($rs);
    /* 输出 
    array(3) {
      [0]=>
      string(1) "A"
      [1]=>
      string(1) "B"
      [2]=>
      string(1) "C"
    }
    
    array(2) {
      [0]=>
      string(1) "A"
      [1]=>
      string(1) "B"
    }
    */
    
    
    14. rPop - 移除列表的最后一个元素,返回值为移除的元素。
     $redis->rPop('key1');
     
    
    15. rpoplpush - 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
    $redis->lPush('x', 'abc');
    $redis->lPush('x','def');
    $redis->lPush('y', '123');
    $redis->lPush('y', '456');
    
    $rs = $redis->rpoplpush('x', 'y');
    var_dump($rs);
    var_dump($redis->lRange('x', 0, -1));
    var_dump($redis->lRange('y', 0, -1));
    
    
    16. rPush - 从列表尾部添加一个或多个元素
    $redis->rPush('key1', 'A');
    $redis->rPush('key1', 'B');
    $redis->rPush('key1', 'C');
    $rs = $redis->lRange('key1', 0, -1);
    
    
    17. rPushx - 在已存在的列表尾部添加值
    $redis->rPushx('key1', 'D');
    $redis->lRange('key1', 0, -1);
    
    

    相关文章

      网友评论

          本文标题:php redis 扩展类常用操作(4) - list

          本文链接:https://www.haomeiwen.com/subject/xwwcxrtx.html