from redis_db import pool
import redis
import random
from concurrent.futures import ThreadPoolExecutor
s=set()
while True:
if len(s)==1000:
break
num = random.randint(10000,100000)
s.add(num)
con = redis.Redis(
connection_pool=pool
)
try:
con.delete("kill_total","kill_num","kill_flag","kill_user")
con.set("kill_total",50)
con.set("kill_num",0)
con.set("kill_flag",1)
con.expire("kill_flag",600)
except Exception as e:
print(e)
finally:
del con
executor = ThreadPoolExecutor(200)
def buy():
connection = redis.Redis(
connection_pool=pool
)
pipline = connection.pipeline()
try:
if connection.exists("kill_flag")==1:
pipline.watch("kill_num", "kill_user")
total = int(pipline.get("kill_total").decode("utf-8"))
num = int(pipline.get("kill_num").decode("utf-8"))
if num<total:
pipline.multi()
pipline.incr("kill_num")
user_id = s.pop()#随机移出一个元素
pipline.rpush("kill_user",user_id)
pipline.execute()
except Exception as e:
print(e)
finally:
if "pipline" in dir():
pipline.reset()
del connection
for i in range(0,1000):
executor.submit(buy())
print("秒杀已经结束")
3.多线程模拟商品秒杀
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、引入Jedis依赖 可以新建Spring或Maven工程,在pom文件中引入Jedis依赖: <depende...
- 共17篇博文【白话经典算法系列之十七】 数组中只出现一次的数数组A中,除了某一个数字x之外,其他数字都出现了三次,...
- 2018.2.3 目标:身心健康,财富丰盛 好种子: 1早起健康早餐,种下健康的种子,回向群里姐妹及家人身心健康 ...