Cet article présente principalement des exemples simples de Redis, qui ont une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
<?php /** * Created by PhpStorm. * User: Perilla * Date: 2018/4/27 * Time: 9:13 */ namespace app\index\controller; /** * Class Reids * 作用:学习redis * 时间:2018年4月27日15:07:28 * (基础已迁移到extend/Reids) * * * 队列的rPop是具有原子性的,即使处理并发,也是一个个处理,不会出现重复和超卖的情况 * Set的特性是不能重复 * 用户抢购队列(List) * 商品队列(List) * 订单信息(Hash集合) * 购买成功用户(Set集合) */ class Reids{ private $reids; /** * 初始化一个reids */ public function __construct(\Redis $reids){ header("content-type:text/html;charset=utf-8"); $this->reids = $reids; $this->reids->connect('127.0.0.1',6379); if($this->reids->ping() == "+PONG"){ echo "reids 正常运行<br/>".PHP_EOL; }else{ echo "reids 开启失败<br/>".PHP_EOL; } } /** * 创建一个货物库 货物n个 */ public function goods($n){ $this->reids->delete('goodsLists'); $this->reids->delete('killsLists'); $this->reids->delete('ordersLists'); $this->reids->delete('usersLists'); for($i = 1;$i<=$n;$i++){ $this->reids->lpush('goodsLists',$i); } echo '进货成功,商品数:'.$this->reids->lsize('goodsLists'); } public function getkillsLists(){ $count = $this->reids->scard('killsLists'); $this->dumps("购买数量",$count); $arr = $this->reids->smembers('killsLists'); $this->dumps("购买清单",$arr); $length = $this->reids->lsize('goodsLists'); $this->dumps("商品剩余数量:",$length); $arr = $this->reids->hgetall('ordersLists'); $this->dumps("商品购买详情:",$arr); } /** * 秒杀过程 * usersLists 用户表(List) * goodsLists 货物表(List) * killsLists 秒杀成功表(Set集合) * ordersLists 订单表(Hash集合) */ public function kills(){ //查询库存 if($this->reids->lLen('goodsLists') == 0) { $this->dumps("商品已售完..."); exit; } //查询是否购买过 $uid = rand(100000,999999); if($this->reids->sIsMember('killsLists',$uid)){ $this->dumps('你已经购买过了!'); exit; } //购买 $goods_id = $this->reids->rpop('goodsLists'); if($goods_id){ $this->reids->sAdd('killsLists',$uid); $value = array( 'uid' => $uid, 'goods_id' => $goods_id, 'time' => time(), ); $this->reids->hSet('ordersLists',$uid,json_encode($value)); $this->dumps('购买成功。'); } } /** * 按一定规律打印一些数据 */ public function dumps($demo,$val = ""){ echo $demo.PHP_EOL; if($val){ dump($val); } echo PHP_EOL; } }
Recommandations associées :
Conseils courants pour faire fonctionner Redis avec PHP
Méthodes pour faire fonctionner Redis avec le framework CI (CodeIgniter)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!