💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# redis 队列解决秒杀解决超卖: 思路:利用lpop移除并返回移除的值,失败返回false;当redis缓存中的商品数量不足则跳过减库存的步骤 ``` <pre class="calibre17">``` <span class="token1"><</span><span class="token1">?</span>php require_once <span class="token2">'./Db.php'</span><span class="token3">;</span> <span class="token">//记录哈希值守护进程</span> $redis <span class="token1">=</span> <span class="token5">new</span> <span class="token4">Redis</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> $redis<span class="token1">-</span><span class="token1">></span><span class="token4">connect</span><span class="token3">(</span><span class="token2">'127.0.0.1'</span><span class="token3">,</span> <span class="token6">6379</span><span class="token3">)</span><span class="token3">;</span> $res<span class="token1">=</span>$redis<span class="token1">-</span><span class="token1">></span><span class="token4">lpop</span><span class="token3">(</span><span class="token2">'goods_store'</span><span class="token3">)</span><span class="token3">;</span><span class="token">//移除并返回列表</span> <span class="token5">if</span><span class="token3">(</span>$res<span class="token3">)</span><span class="token3">{</span> $pdo<span class="token1">=</span>Db<span class="token3">:</span><span class="token3">:</span><span class="token4">instance</span><span class="token3">(</span><span class="token2">'127.0.0.1'</span><span class="token3">,</span> <span class="token2">'root'</span><span class="token3">,</span> <span class="token2">'root'</span><span class="token3">,</span> <span class="token2">'test'</span><span class="token3">,</span> <span class="token2">'utf8'</span><span class="token3">)</span><span class="token3">;</span> $id<span class="token1">=</span><span class="token4">mt_rand</span><span class="token3">(</span><span class="token6">20</span><span class="token3">,</span><span class="token6">30</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//$where['id'] =['>',1]; </span> $where<span class="token3">[</span><span class="token2">'id'</span><span class="token3">]</span> <span class="token1">=</span>$id<span class="token3">;</span> $res<span class="token1">=</span>$pdo<span class="token1">-</span><span class="token1">></span><span class="token4">table</span><span class="token3">(</span><span class="token2">'good'</span><span class="token3">)</span><span class="token1">-</span><span class="token1">></span><span class="token4">where</span><span class="token3">(</span>$where<span class="token3">)</span><span class="token1">-</span><span class="token1">></span><span class="token4">setDec</span><span class="token3">(</span><span class="token2">'goods_store'</span><span class="token3">,</span><span class="token6">1</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span>$res<span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span><span class="token5">else</span><span class="token3">{</span> echo <span class="token2">'秒杀失败'</span><span class="token3">;</span> <span class="token3">}</span> 入队页面(有多少商品入多少次队): <span class="token1"><</span><span class="token1">?</span>php $redis<span class="token1">=</span><span class="token5">new</span> <span class="token4">Redis</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> $redis<span class="token1">-</span><span class="token1">></span><span class="token4">connect</span><span class="token3">(</span><span class="token2">'127.0.0.1'</span><span class="token3">,</span><span class="token6">6379</span><span class="token3">)</span><span class="token3">;</span> $store<span class="token1">=</span><span class="token6">10</span><span class="token3">;</span> <span class="token5">for</span><span class="token3">(</span>$i<span class="token1">=</span><span class="token6">0</span><span class="token3">;</span>$i<span class="token1"><</span>$store<span class="token3">;</span>$i<span class="token1">++</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">'goods_store'</span><span class="token3">,</span><span class="token6">1</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token4">var_dump</span><span class="token3">(</span>$redis<span class="token1">-</span><span class="token1">></span><span class="token4">lRange</span><span class="token3">(</span><span class="token2">'goods_store'</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="token3">;</span> ``` ```