好的,以下是添加秒杀商品数的 Python 代码:
```python
import redis
# 连接 Redis
r = redis.Redis(host='localhost', port=6379, db=0)
# 商品信息列表
goods_list = [
{'id': 1, 'name': '汽水', 'quantity': 5, 'category': '饮料', 'seckill_num': 0},
{'id': 2, 'name': '薯片', 'quantity': 4, 'category': '零食', 'seckill_num': 0},
{'id': 3, 'name': '汽水', 'quantity': 2, 'category': '饮料', 'seckill_num': 0},
{'id': 4, 'name': '薯片', 'quantity': 1, 'category': '零食', 'seckill_num': 0},
{'id': 5, 'name': '薯片', 'quantity': 3, 'category': '零食', 'seckill_num': 0},
{'id': 6, 'name': '汽水', 'quantity': 5, 'category': '饮料', 'seckill_num': 0},
{'id': 7, 'name': '橙汁', 'quantity': 7, 'category': '饮料', 'seckill_num': 0},
{'id': 8, 'name': '汽水', 'quantity': 8, 'category': '饮料', 'seckill_num': 0},
{'id': 9, 'name': '橙汁', 'quantity': 9, 'category': '饮料', 'seckill_num': 0},
{'id': 10, 'name': '蛋糕', 'quantity': 7, 'category': '零食', 'seckill_num': 0},
{'id': 11, 'name': '汽水', 'quantity': 8, 'category': '饮料', 'seckill_num': 0},
{'id': 12, 'name': '蛋糕', 'quantity': 8, 'category': '零食', 'seckill_num': 0},
{'id': 13, 'name': '蛋糕', 'quantity': 8, 'category': '零食', 'seckill_num': 0},
{'id': 14, 'name': '蛋糕', 'quantity': 8, 'category': '零食', 'seckill_num': 0},
{'id': 15, 'name': '奶茶', 'quantity': 6, 'category': '饮料', 'seckill_num': 0},
{'id': 16, 'name': '奶茶', 'quantity': 3, 'category': '饮料', 'seckill_num': 0},
{'id': 17, 'name': '汽水', 'quantity': 10, 'category': '饮料', 'seckill_num': 0},
{'id': 18, 'name': '奶茶', 'quantity': 5, 'category': '饮料', 'seckill_num': 0},
{'id': 19, 'name': '汽水', 'quantity': 8, 'category': '饮料', 'seckill_num': 0},
{'id': 20, 'name': '奶茶', 'quantity': 9, 'category': '饮料', 'seckill_num': 0}
]
# 将商品信息导入 Redis
for goods in goods_list:
r.hmset(goods['id'], goods)
# 模拟秒杀系统
def seckill(goods_id, quantity):
# 获取商品信息
goods_info = r.hgetall(goods_id)
# 判断商品是否存在
if not goods_info:
print('商品不存在!')
return False
# 判断商品数量是否足够
if int(goods_info[b'quantity']) - int(goods_info[b'seckill_num']) < quantity:
print('商品数量不足!')
return False
# 减少商品数量
r.hincrby(goods_id, 'seckill_num', quantity)
print('秒杀成功!')
return True
# 调用秒杀函数进行测试
seckill(1, 2) # 秒杀成功!
seckill(1, 4) # 商品数量不足!
seckill(21, 2) # 商品不存在!
```
以上代码中,每个商品信息字典中新增了一个键值对 `seckill_num`,用来记录已秒杀的商品数量。在秒杀函数中,判断商品数量是否足够时,需要减去已秒杀的商品数量。在秒杀成功后,使用 `hincrby` 命令增加已秒杀的商品数量。