关于缓存令牌减少丢失操作
来源:18-6 使用缓存加速令牌锁功能

qq_Theonlywinne_0
2023-07-25
- 代码里写的是每次购票要去减少redis中的令牌的时候,都会把过期时间更新为60秒,但是每减少5个token才进行一次MySQL数据库一致性的刷新。那很有可能此次减少的令牌不足五个,但是60s内有没有再次访问这个锁,那这次令牌的减少就没有更新到mysql中。这个问题是因为token没有那么高的一致性要求吗,所以可以不用管。
- 令牌大闸和令牌桶还有什么背的区别吗,我看老师讲的,主要区别就是
- 令牌桶有一个定速放令牌的过程
- 令牌大闸是一次性把令牌给够
那为什么这个项目要选择令牌大闸呢,只有这一个区别好像并不能成为一个选择这个技术的决定性原因。
写回答
1回答
-
是的,令牌数和票数关联不需要那么紧密,不需要管,实际中,有可能令牌没了,票还没卖完,所以我们需要再加个定时任务,定时的刷新令牌数和票数保持同步。
可以这样来理解,令牌桶是为了解决水流速度的,我可以控制出票的速度,太快了会导致我服务承受不了;令牌大闸是为了解决库存上限的问题,如果没有令牌大闸,那么我票卖完了,水流还一直在,一直会校验我的库存,对服务也是一种压力。一般两者要配合起来使用,又要控制卖的速度,又要控制卖的上限
222024-01-29
相似问题