搜索

首页  >  问答  >  正文

redis的key或者计数器有没有递减的功能?

比如现在想实现类似一个秒杀的功能,10个用户抢2个商品,redis或者memcache或者其它的nosql产品,有没有类似的功能,就是我有个计数器(库存,比如等于2)然后,开始抢商品的时候,前2个用户,已经将库存减到0了,当第3个人来抢的时候,计数器不会变为-1,而是还是为0,并且这个操作会返回一个操作失败,或者类似于mysql的返回影响行数为0的这种反馈信息,让我知道的?

ringa_leeringa_lee2799 天前763

全部回复(3)我来回复

  • 迷茫

    迷茫2017-04-21 11:19:22

    reids 有DECR(原子递减),memcache也有decrement功能,他们的区别是,redis的原子递减到0了会变为负数,而memcache的会一直为0

    回复
    0
  • 高洛峰

    高洛峰2017-04-21 11:19:22

    没有。会变成-1,恐怕你要自行判断了。

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-21 11:19:22

    乐观锁 解决

    不检查锁 直接通过 但是通过后核对版本号 正确不操作 否则回滚(需要事物支持)

    有个问题就是 可能2,3次序的用户没抢到 4,5次序的抢到了(这种情况你写一个demo测试一下就清楚了)

    回复
    0
  • 取消回复