前置条件 :
- 安装redis
- 开启redis
- php开启redis拓展 ( 直到phpinfo中可以看得到redis )
注意 : 不开启redis也是连接不上的
windows开启redis命令:
开启cmd , 先切到对应的目录 , 如果不想每次切就配环境变量
$ cd "你的redis目录路径"\redis-server
如果是远程连接或者你的redis配置了密码
$ redis-cli -h host -p port -a password
连接成功之后你会看到redis的信息
ok准备完成
首先连接redis , 默认端口6379
<?php
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
这一步没报错就说明连接成功 , 如果报错请看上面步骤有哪个没实现
我使用的数据类型为列表
//往列表中存入数据
$redis->lpush($key,$value);
获取列表当前长度
$len = $redis->llen($key);
由于redis的列表排序是一个desc的反序 , 所以取出第一条记录的话需要这样取
$list = $redis->lrange($key,$len-1,$len-1);
判断当前的$value是否在列表第一位
if($value != $list[0]){
//未抢到订单的逻辑
}else{
//抢到订单的逻辑
}
抢单成功之后清除列表缓存
$redis->del($key);
这里我做的是一个单订单抢单的业务逻辑 , 也就是相当于库存为1
如果需要做多库存的逻辑 , 需要配合上MySQL的剩余库存量做判断 , 不要用查询数据库操作 , 尽量使用缓存来实现 , 因为MySQL不适合处理高并发的情况