zoukankan      html  css  js  c++  java
  • 解决秒杀活动高并发出现负库存(Redis)

    商城在秒杀活动开始时,同时有好多人来请求这个接口,即便做了判断库存逻辑,也难免防止库存出现超卖,造成损失

    Django中的ORM本身就对数据库做了防范,但再过亿级访问也扛不住

    下面利用Redis的过载防止负库存

    #使用REDIS 阻止秒杀时并发状态造成的负库存
    import redis
    #定义过载
    def limit_handler():
        r = redis.Redis(host='localhost', port=6379)
        """
        return True: 允许; False: 拒绝
        """
        amount_limit = 10  # 限制数量
        keyname = 'limit123'  # redis key name
        incr_amount = 1  # 每次增加数量
    
        # 判断key是否存在
        if not r.exists(keyname):
            # 为了方便测试,这里设置默认初始值为95
            # setnx可以防止并发时多次设置key
            r.setnx(keyname, 0)
    
        # 数据插入后再判断是否大于限制数
        if r.incrby(keyname, incr_amount) <= amount_limit:
            return True
        return False
  • 相关阅读:
    病毒
    最短母串
    单词
    Censoring
    玄武密码
    Keywords Search
    聚会
    异象石
    暗的连锁
    pat 1048. Find Coins (25)
  • 原文地址:https://www.cnblogs.com/xcsg/p/10702552.html
Copyright © 2011-2022 走看看