利用Redis锁解决高并发问题
这里我们主要利用 Redis 的 setnx 的命令来处理高并发。有个问题,setnx需要配合expire来设置时间,这样就不再是原子性的,还有个更好的办法,使用set来进行锁操作set后面有nx等参数来进行原子操作会更好 setnx 有两个参数。第一个参数表示键。第二个参数表示值。如果当前键不存在,那么会插入当前键,将第二个参数做为值。返回 1 。如果当前键存在,那么会返回 0 。 创建库存表 CREATE TABLE `storage` ( `id` int( 11) unsigned NOT NULL AUTO_INCREMENT, ` number ` int(11) DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE =InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 设置初始库存为10 创建订单表 CREATE TABLE `order` ( `id` int( 11) unsigned NOT NULL AUTO_INCREMENT, ` number ` int(11) DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE =InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 测试不用锁的时候 $pdo = new