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