关于秒杀系统的一些想法

关于秒杀系统

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

       秒杀功能常见,但完整的秒杀系统却不是那么经常用到 ,一套完整的秒杀系统涉及到 负载均衡、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.cnblogs.com/yangs0/p/8463788.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值