ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 列表 > 建议使用 Redis 列表之前先学习数据结构链表 头元素和尾元素:头元素指的是列表左端/前端第一个元素,尾元素指的是列表右端/后端第一个元素。列表 list包含三个元素:\[a,b,c,d,e\] 其中 a 是头元素,而 e 则是尾元素。 空列表:指不包含任何元素的列表,Redis 将不存在的 key 也视为空列表。 ### 列表操作 ~~~ <?php $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); // Redis 没设置密码则不需要这行代码 // $redis->auth('password'); // 向队列左侧加入元素 $redis->lPush('lists', 'X'); // 向队列右侧加入元素 $redis->rPush('lists', 'Z'); //将一个插入已存在的列表头部,列表不存在时操作无效 $redis->rPushx("key1","1"); // 将索引为1的数据修改为 Y $redis->lSet('lists', 1, 'Y'); // 获取 list 长度 $length = $redis->lLen('lists'); echo $length; // 遍历 list $lists = $redis->lRange('lists', 0, $length - 1); dump($lists); // 从左侧出队一个元素(获取并删除) $x = $redis->lPop('lists'); echo $x . PHP_EOL; // 从右侧出队一个元素(获取并删除) $z = $redis->rPop('lists'); echo $z . PHP_EOL; // 获取左侧第一个元素 $y = $redis->lGet('lists', 0); echo $y . PHP_EOL; //删除并或取列表的第一个元素,如果没有元素则会阻塞直到等待超时 $redis->blPop('asd', 10); //删除并或取列表的最后一个元素,如果没有元素则会阻塞直到等待超时 $ret = $redis->brPop('asd', 10); //移除列表key1中最后一个元素,将其插入另一个列表asd头部,并返回这个元素。若源列表没有元素则返回false $redis->rpoplpush('key1', 'asd'); //移除列表key1中最后一个元素,将其插入另一个列表asd头部,并返回这个元素。如果列表没有元素则会阻塞列表直到超时,超时返回false。 $ret = $redis->brpoplpush('key1', 'asd', 10); //通过索引修改列表中元素的值,如果没有该索引,则返回false。 $redis->lSet('key1', 2, '1'); //在列表key1中指定元素six前面或后面插入元素。若指定元素不在列表中,或列表不存在时,不执行任何操作 //Redis::AFTER插入元素后面 Redis::BEFORE插入元素前面 //返回值:插入成功返回插入后列表元素个数,若key1不存在返回0,若key1不是列表返回false $redis->lInsert('key1', Redis::BEFORE, 'one', '1'); //根据第三个参数(count),删除掉相对的value //count > 0 : 从表头开始向表尾搜索,移除与value相等的元素,数量为count。 //count < 0 : 从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。 //count = 0 : 移除表中所有与value相等的值。 //返回实际删除元素个数 $redis->lrem('key1', '1', -2); //对一个列表进行截取,只保留指定区间 (如:下标1到10) 的元素,其他元素都删除。成功返回true。 $redis->ltrim('key1', 1, 10); // 删除队列 $redis->del('lists'); ~~~ 以上文章来源:看云手册《当 Redis 遇上 ThinkPHP5》