PHP中的Redis List(列表) 相关操作

2107人浏览 2020-09-10

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 – 1 个元素 (4294967295, 每个列表超过40亿个元素)。

Redis list的使用场景:

  1. 消息队列
    list类型的lpop和rpush(或者反过来,lpush和rpop)能实现队列的功能,故而可以用Redis的list类型实现简单的点对点的消息队列。
  2. 最新列表
    list类型的lpush命令和lrange命令能实现最新列表的功能,每次通过lpush命令往列表里插入新的元素,然后通过lrange命令读取最新的元素列表,如朋友圈的点赞列表、评论列表

redis list在php中的常用操作: 

        //创建redis对象
        $redis = getRedis(9);
 
        //在list列表头部插入一个值 ’1‘ ,如果'test'列表不存在则自动创建此列表。
        $redis->lPush('test','1');
 
        //在list列表尾部插入一个值’2‘ ,如果'test'列表不存在则自动创建此列表。
        $redis->rPush('test','2');
 
        //用于将一个值('1')插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效 返回列表的长度
        $redis->rPushx('test','1');
 
        //用于将一个值('1')插入到已存在的列表头部,如果列表不存在,操作无效 返回列表的长度
        $redis->lPushx('test','1');
 
        //移除并返回列表的第一个元素,当’test‘不存在或为空时返回false
        $redis->lPop('test');
 
        //移除并返回列表的尾部最后一个元素,当’test‘不存在或为空时返回false
        $redis->rPop('test');
 
        //取出并删除列表第一个元素,如果没有元素则阻塞等待5秒或到可取出元素为止。
        $redis->blPop('test',5);
 
        //取出并删除列表最后一个元素,如果没有元素则阻塞等待5秒或到可取出元素为止。
        $redis->brPop('test',5);
 
        //移除test列表的最后一个元素,并将该元素添加到test2列表并返回 失败返回false
        $redis->rpoplpush('test','test2');
 
        //移除test列表的最后一个元素,并将该元素添加到test2列表并返回 如果列表没有元素则会阻塞列表5秒,直到超时或有可取元素,超时返回false
        $redis->brpoplpush('test', 'test2', 5);
 
        //返回列表长度
        $redis->lLen('test');
 
        //获取索引为1的列表中的元素,失败返回false
        $redis->lIndex('test',1);
 
        //设置test列表索引为1的值为’1‘,失败返回false
        $redis->lSet('test',1,'1');
 
        //在列表的元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作。
        // \Redis::BEFORE 插入元素之后  \Redis::AFTER 插入元素之前
        //当列表不存在时,被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误。
        $redis->lInsert('test', \Redis::AFTER,'a','1');
 
        //移除列表中与参数 VALUE (’1‘) 相等的元素
        //count 可选范围:
        //count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
        //count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
        //count = 0 : 移除表中所有与 VALUE 相等的值
        $redis->lRem('test','1',-1);
 
        //对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
        //下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
        $redis->lTrim('test',1,5);
 
        //返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。
        // 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
        $redis->lRange('test',0,10);

 

推荐文章

Mac下为php7.3编译安装Redis扩展(phpredis)教程(使用brew安装的php)
2020-09-25
PHP7.4 报错:Deprecated Functionality: implode(): Passing glue string after array is deprecated.
2020-09-18
使用富文本编辑器CKEditor 4 加Thinkphp6实现粘贴截图上传图片功能。
2020-09-10
搜索文章