ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
~~~ /*List栈的结构,注意表头表尾,创建更新分开操作 l表示头部 r表示尾部 b表示阻塞式*/ $redis->lPush('key','value');//增,只能将一个值value插入到列表key的表头,不存在就创建 [列表的长度 |false] $redis->rPush('key','value');//增,只能将一个值value插入到列表key的表尾,不存在就创建 [列表的长度 |false] $redis->lInsert('key', Redis::BEFORE | Redis::AFTER, 'value', 'new_value');//增,将值value插入到列表key当中,位于值value之前或之后。[new_len | false] $redis->lPushx('key','value');//增,只能将一个值value插入到列表key的表头,不存在不创建 [列表的长度 |false] $redis->rPushx('key','value');//增,只能将一个值value插入到列表key的表尾,不存在不创建 [列表的长度 |false] $redis->lPop('key');//删,移除并返回列表key的头元素,[被删元素 | false] $redis->rPop('key');//删,移除并返回列表key的尾元素,[被删元素 | false] $redis->lRem('key','value',0);//删,根据参数count的值,移除列表中与参数value相等的元素count=(0|-n表头向尾|+n表尾向头移除n个value) [被移除的数量 | 0] $redis->lTrim('key',start,end);//删,列表修剪,保留(start,end)之间的值 [true|false] $redis->lSet('key',index,'new_v');//改,从表头数,将列表key下标为第index的元素的值为new_v, [true | false] $redis->lIndex('key',index);//查,返回列表key中,下标为index的元素[value|false] $redis->lRange('key',0,-1);//查,(start,stop|0,-1)返回列表key中指定区间内的元素,区间以偏移量start和stop指定。[array|false] $redis->lLen('key');//返回列表key的长度,不存在key返回0, [ len | 0] $redis->lSize('key');//返回列表key的长度,不存在key返回0, [ len | 0] blPop() //删,阻塞式移除并返回列表key的头元素,[被删元素 | false] brPop() //删,阻塞式移除并返回列表key的尾元素,[被删元素 | false] bRPopLPush(listkey1,listkey2,500) - 阻塞式的从列表中移除最后一个元素,将其推附加到另一个列表头部并返回它 rPopLPush - 从列表中移除最后一个元素,将其附加到另一个列表头部并返回它(redis> = 1.1) //bRPopLPush和rPopLPush是为了解决lpush与rpop的队列业务时取出消息时客户端崩溃导致数据丢失; //bRPopLPush和rPopLPush不仅返回一个消息,同时还将这个消息添加到另一个备份列表当中降低容错率; //当一个客户端完成某个消息的处理之后,可以用 LREM key count value 命令将这个消息从备份表删除。 //最后,还可以添加一个客户端专门用于监视备份表, //它自动地将超过一定处理时限的消息重新放入队列中去(负责处理该消息的客户端可能已经崩溃),这样就不会丢失任何消息了 $redis->lpush('list_key1','value1'); $redis->lpush('list_key1','value2'); $redis->lpush('list_key1','value3'); $value=$redis->rPopLPush('list_key1', 'list_key2');//将list_key1的最后一个移到list_key2(备份列表)的前面并返回该值 if($service){ //如果出里的业务成功则移除备份列表的这个值 $redis->lRem('list_key2',1,$value); }else{ //失败将该值继续推送到list_key1的头部 $redis->lpush('list_key1',$value); } //另一个监视备份列表的脚本 它自动地将超过一定处理时限的消息重新放入队列中去(一般是崩溃情况) $c=$redis->object("idletime", "list_key2"); //→ 400 这个只能查询list_key2的空闲时间 并不能实时的监控某个值的情况,当有其他值变化时会刷新这个时间 ~~~