美文网首页
Redis 列表

Redis 列表

作者: 爱折腾的傻小子 | 来源:发表于2020-09-27 09:09 被阅读0次
    Rpush 将一个或多个值插入到列表的尾部(最右边)
    • 如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误
    • rpush redis命令 RPUSH KEY_NAME VALUE1..VALUEN
    // 支持多个存值
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('rpush', [
        'r2', 'sq3', 'sdww'
    ]); // 2
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->rpush('r2', 'sq1');
    // 返回列表长度
    
    Lpush 将一个或多个值插入到列表头部
    • 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作
    • 当 key 存在但不是列表类型时,返回一个错误
    • lpush redis命令 LPUSH KEY_NAME VALUE1.. VALUEN
    // 注意这里的添加到列表里面顺序应该是 push、left、......
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('lpush', [
        'r2', 'left', 'push'
    ]);
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->lpush('r2', 'left', 'push');
    // 返回值 返回列表的长度
    
    Rpushx 将一个或多个值插入到已存在的列表尾部(最右边)
    • 如果列表不存在,操作无效
    • rpushx redis命令 RPUSHX KEY_NAME VALUE1..VALUEN
    // rpushx 只支持一个value值
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('rpushx', [
        'r2', 'x1'
    ]);
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->rpushx('r2', 'left');
    // 返回列表长度
    
    Lpushx 将一个或多个值插入到已存在的列表头部
    • 列表不存在时操作无效
    • lpushx redis命令 LPUSHX KEY_NAME VALUE1.. VALUEN
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('lpushx', [
        'r2', 'x1'
    ]);
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->lpushx('r2', 'left');
    // 返回列表长度
    
    Lpop 移除并返回列表的第一个元素
    • 列表的第一个元素。 当列表 key 不存在时,返回 nil
    • lpop redis命令 LPOP KEY_NAME
    // 列表不存在返回false
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('lpop', [
        'r21'
    ]);  // false
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->lpop('r2');
    // 返回值列表不存在返回false 否则返回被移除的数据
    
    Rpop 移除并返回列表的最后一个元素
    • 列表的最后一个元素。 当列表不存在时,返回 nil
    • rpop redis命令 RPOP KEY_NAME
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('rpop', [
        'r2'
    ]);
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->rpop('r2');
    // 返回值列表不存在返回false 否则返回被移除的数据
    
    Blpop 移出并获取列表的第一个元素
    • 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
    • blpop redis命令 BLPOP LIST1 LIST2 .. LISTN TIMEOUT
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('blpop', [
        'r2',  // keys 获取多个key始终返回第一个key
        20             // 超时时间 
    ]);  // ['r2', 'left']
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->blpop('r2', 20);
    
    BRPOP 移出并获取列表的最后一个元素
    • 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
    • brpop redis命令 BRPOP LIST1 LIST2 .. LISTN TIMEOUT
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('brpop', [
        'r2',  // keys 获取多个key始终返回第一个key
        20             // 超时时间 
    ]);  // ['r2', 'left']
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->brpop('r2', 20);
    
    Rpoplpush 移除列表的最后一个元素
    • 并将该元素添加到另一个列表开头并返回
    • rpoplpush redis 命令 RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('rpoplpush', [
        'r2', 'r1'
    ]);  // "asdasd"
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->rpoplpush('r2', 'r1');
    // 返回移动的元素值
    
    Brpoplpush 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它
    • 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
    • brpoplpush
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('brpoplpush', [
        'r2', 'r1'
    ]);  // "asdasd"
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->brpoplpush('r2', 'r1');
    // 返回移动的元素值
    
    Lindex 通过索引获取列表中的元素
    • 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
    • lindex redis命令 LINDEX KEY_NAME INDEX_POSITION
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('lindex', [
        'r2', 1
    ]);  // 默认从0开始 这里返回第二个元素
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->lindex('r2', 0);
    
    Lset 通过索引来设置元素的值
    • 当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误
    • lset redis命令 LSET KEY_NAME INDEX VALUE
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('lset', [
        'r2', -1, 'xs'
    ]);  // true
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->lset('r2', -1, 'xs');
    // 返回值 如果超出索引返回false 设置成功返回true
    
    Linsert 在列表的元素前或者后插入元素
    • 当指定元素不存在于列表中时,不执行任何操作
    • 当列表不存在时,被视为空列表,不执行任何操作
    • 如果 key 不是列表类型,返回一个错误
    • linsert redis命令 LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('linsert', [
        'r2', \Redis::AFTER, 'xs', 'xs1'
    ]);  // 6
    // \Redis::AFTER => 'after', \Redis::BEFORE = 'before'
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->linsert('r2', \Redis::BEFORE, 'xs', 'before');
    // 返回值 返回列表的长度
    
    Ltrim 对一个列表进行修剪(trim)
    • 让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
    • 下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推
    • 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
    • ltrim redis命令 LTRIM KEY_NAME START STOP
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('ltrim', [
        'r2', 0, -2
    ]);  // true
    // or 
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->ltrim( 'r2', 0, -1);  // 0 -1 不会删除元素
    //  修剪成功返回true
    
    Lrange 返回列表中指定区间内的元素
    • 区间以偏移量 START 和 END 指定
    • 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推
    • 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
    • lrange redis 命令 LRANGE KEY_NAME START END
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('lrange', [
        'r2' , 0, -2
    ]);  // ["sq3", "asdasd"]
    // or
    //    $return = \Illuminate\Support\Facades\Redis::connection('expired')->lrange('r2' , 0, -1);  // 0 -1 返回所有
    
    Llen 返回列表的长度
    • 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0
    • 如果 key 不是列表类型,返回一个错误
    • llen redis命令 LLEN KEY_NAME
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('llen', [
        'r2'
    ]);  // 4
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->llen('r2');
    // 成功返回列表长度
    
    Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素
    • COUNT 的值可以是以下几种:
      • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT
      • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值
      • count = 0 : 移除表中所有与 VALUE 相等的值
    • lrem redis命令 LREM KEY_NAME COUNT VALUE
    $return = \Illuminate\Support\Facades\Redis::connection('expired')->command('lrem', [
        'r2' , 'sdww', 0
    ]); // 1
    // or
    // $return = \Illuminate\Support\Facades\Redis::connection('expired')->lrem('r2' , 'sdww', 0);
    // 返回移除的数量
    

    相关文章

      网友评论

          本文标题:Redis 列表

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