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