商城在秒殺活動開始時,同時有好多人來請求這個接口,即便做了判斷庫存邏輯,也難免防止庫存出現超賣,造成損失
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