关于秒杀系统的一些想法

       在学习过程中,经常遇到关于秒杀系统的文章,但查阅各种资料,总觉得没一篇文章能完整的讲解秒杀系统是如何实现的。

秒杀功能常见,但完整的秒杀系统却不是那么经常用到 ,一套完整的秒杀系统涉及到 负载均衡、CDN、分布式、服务集群 等方面的知识。

秒杀功能代码的简单实现:

秒杀功能的实现,其实不外乎 3 种方式:

     1. 单进程  ( 用户量大时,体验不友好),

     2. 锁 ( 用户量大时,并发,容易产生不可预期的问题 如: 死锁等),

     3. 队列  (  相对推荐 )

  Redis 队列的简单实现

$ttl = 4; $random = mt_rand(1,1000).\'-\'.gettimeofday(true).\'-\'.mt_rand(1,1000); $lock = fasle; while (!$lock) { $lock = $redis->set(\'lock\', $random, array(\'nx\', \'ex\' => $ttl)); } if ($redis->get(\'goods.num\') <= 0) { echo ("秒杀已经结束"); //删除锁 if ($redis->get(\'lock\') == $random) { $redis->del(\'lock\'); } return false; } $redis->decr(\'goods.num\'); echo ("秒杀成功"); //删除锁 if ($redis->get(\'lock\') == $random) { $redis->del(\'lock\'); } return true;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjfxy.html