>  Q&A  >  본문

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

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

ringa_leeringa_lee2760일 전729

모든 응답(3)나는 대답할 것이다

  • 迷茫

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

    reids에는 DECR(원자 감소)이 있고 Memcache에도 감소 기능이 있습니다. 차이점은 redis의 원자 감소는 0이 되면 음수가 되고 Memcache는 항상 0이 된다는 것입니다.

    회신하다
    0
  • 高洛峰

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

    아니요. -1이 될 것이므로 스스로 판단해야 할 것 같습니다.

    회신하다
    0
  • 伊谢尔伦

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

    낙관적 잠금 솔루션

    락을 확인하지 않고 직접 전달하되, 전달 후 버전번호를 확인하여 올바르게 동작하지 않거나 그렇지 않으면 롤백(트랜잭션 지원 필요)

    한 가지 문제는 2번과 3번 순서의 사용자는 얻지 못했을 수도 있지만 4번과 5번 순서의 사용자는 얻었을 수도 있다는 점입니다. (이 경우에는 테스트용 데모를 작성해 보면 알 수 있습니다.)

    회신하다
    0
  • 취소회신하다