zoukankan      html  css  js  c++  java
  • 利用memcached实现分布式锁

    一  需求场景:

    (1) 需要限制用户创建提现订单的频率:目的一是防止前端bug引起的用户重复提交;二是防止并发攻击绕过提现策略(第一次提现和第二次提现门槛可能不同)。

    (2) 需要限制秒杀下同一用户抢中多个商品

    二 实现方法,利用memcached 的 add() 方法,php伪代码如下

    funciton check_lock($key)
    {
            $catch_obj = new CacheUtil();
            if ($catch_obj->get($key))
            {
                throw new Exception();  // 资源被占用,直接抛出异常
            }
            else
            {
                $result = $catch_obj->add($key, $value, $expire_time); 
                if($result === false)
                {
                    throw new Exception(); // 加锁失败,说明资源已经被占使用抛出异常
                }
            }
            retun $result;
    }
    

     此外,memcached 的 incr 和 decr 也是原子的,可以用于秒杀的商品计数器。

  • 相关阅读:
    Business
    Triple Inversions
    protobuf
    16.04 ubuntu python3.6 install
    1.安装
    Tutorial2
    Tutorial1
    geometry_msgs的ros message 类型赋值
    UBUNTU QQ/TIM的救星
    ubuntu17.10升级到ubuntu18.04 LTS
  • 原文地址:https://www.cnblogs.com/smallrookie/p/7485668.html
Copyright © 2011-2022 走看看