redis事物处理秒杀等(乐观锁)
redis的连接配置就不写了,下面是核心代码
<?php
header('content-type:text/html;charset=utf-8');
$redis = new \myredis\Datasource();
$redis = $redis::getRedis('instance1');
echo "页面被访问了" . $redis->incr('ci'). '<br>';
echo '总共抢到了' . $redis->lLen('s_kill') . '<br>';
echo '剩余数量' . $redis->get('s_kill_number'). '<br>';
$redis -> watch('s_kill_number'); //监视key
$num_ber = $redis -> get('s_kill_number');
$redis -> multi(); //开启事务
if ( $num_ber > 0) {
$redis->decr('s_kill_number');
$redis->lPush('s_kill', rand(1000, 9999));
$redis -> exec(); //执行事务
exit('OK'. '<br>');
} else {
$redis -> exec();
exit('已抢完了'. '<br>');
}