1. 在一些项目中,有时候需要记录一些数字,比如需要知道每天微信推送了多少条模板消息或者其他的一些需求,或者一个功能:用户扫码当天达到20次即不再让用户扫码,或者秒杀活动中,这件商品只规定卖200件,如果我们使用数据库来作为查询,那么并发量特别大,db就会抗不住,我们就需要用中间件来削峰,并且配合redis, 当然,我们的电商项目肯定没有那么大,并发量也不会那么大,为了避免超卖,我们使用mysql中的乐观锁也可以,但是为了更快,我们就可以使用redis中的incr来提高效率
  2. 为什么可以使用redis中的incr功能来避免超卖那?因为redis中的Incrby是原子操作, 那怕是多线程的情况下 , 因为是原子操作 , 就只能有一个线程对Key进行修改 , 其他线程修改不了。所以这就避免了超卖的现象,
  3. incr在python中的使用:
import redis

redis_client = redis.Redis(host="localhost",port=6379,db=0)

redis_client.set('num', 1)
print(redis_client.get("num").decode())

# 使用incr来当中计数器
redis_client.incr("num", 1)
redis_client.incr("num", -2)
print(redis_client.get("num").decode())

# 如果执行incr增加时string不存在,那么会将这个string初始化为0,然后只能执行加操作
if redis_client.get("num1"):
    print(redis_client.get("num1").decode())
redis_client.incr("num1", 1)
print(redis_client.get("num1").decode())

执行结果:

1
0
1
  1. 常见命令:decr 减 incrbyfloat 操作小数