好久没有更新文章了。
list使用场景如下:
消息队列
list类型的lpop和rpush(或者反过来,lpush和rpop)能实现队列的功能,故而可以用Redis的list类型实现简单的点对点的消息队列。
最新列表
list类型的lpush命令和lrange命令能实现最新列表的功能,每次通过lpush命令往列表里插入新的元素,
然后通过lrange命令读取最新的元素列表,比如评论列表、朋友圈的点赞列表。
######消息队列demo,简单模拟抢购商品#####
$redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->auth('123456'); $redis->flushAll(); //清空所有数据 /***入列***/ //用户点击抢购的时候,把商品信息存入消息队列 $key = 'product1';#商品1 for ($i = 0; $i < 100; $i++) { $uid = rand(1000, 9999); $number = 10; //次数,假设这件商品只能10个人抢购 if ($number > $redis->lLen($key)) { $redis->rpush($key, $uid); //不够10个就入列 } else { continue; } } /***出列***/ while (true){ $flag = $redis->exists($key); if($flag){ $uid = $redis->rpop($key); echo $uid ."抢购成功!,进行订单处理操作<br/>"; } else { echo "出列完毕!"; exit; } }