在高并发的情况下读库读红包金额怕会读到相同的金额元素。然后因为redis的list类型的lpop操作是原子性的,即不会重复弹出同一个元素,因此采用了把金额推入list列表类型的方案,在红包分配完后把金额逐个推入到list中,在抢的时候执行lpop弹出操作,因为lpop的原子性,以此保证了唯一性。请问下我这种思路是否可行呢,不如不行,可以采用什么方式呢,或者有什么要思考或者优化的方法吗,十分感谢!
在高并发的情况下读库读红包金额怕会读到相同的金额元素。然后因为redis的list类型的lpop操作是原子性的,即不会重复弹出同一个元素,因此采用了把金额推入list列表类型的方案,在红包分配完后把金额逐个推入到list中,在抢的时候执行lpop弹出操作,因为lpop的原子性,以此保证了唯一性。请问下我这种思路是否可行呢,不如不行,可以采用什么方式呢,或者有什么要思考或者优化的方法吗,十分感谢!
15 回答8.4k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
解决这种秒杀场景,使用redis list方案也是一个主流解决方案,缺陷就是如果是那种商品类的涉及库存的话可能会占太多内存而已,其他的方案就是分布式锁,或者使用 reids DECRBY