比如现在想实现类似一个秒杀的功能,10个用户抢2个商品,redis或者memcache或者其它的nosql产品,有没有类似的功能,就是我有个计数器(库存,比如等于2)然后,开始抢商品的时候,前2个用户,已经将库存减到0了,当第3个人来抢的时候,计数器不会变为-1,而是还是为0,并且这个操作会返回一个操作失败,或者类似于mysql的返回影响行数为0的这种反馈信息,让我知道的?
ringa_lee
reids には DECR (アトミック デクリメント) があり、memcache にもデクリメント機能があります。両者の違いは、redis のアトミック デクリメントは 0 になると負の数になるのに対し、memcache は常に 0 になることです。
いいえ。 -1になりますが、ご自身で判断してください。
オプティミスティックロックソリューション
ロックをチェックせず、直接渡しますが、渡した後にバージョン番号を確認し、正しく操作しないとロールバックします(トランザクションサポートが必要です)
1 つの問題は、おそらく注文 2 と 3 のユーザーは理解できなかったが、注文 4 と 5 のユーザーは理解できたことです (この場合、デモを作成してテストするとわかります)
reids には DECR (アトミック デクリメント) があり、memcache にもデクリメント機能があります。両者の違いは、redis のアトミック デクリメントは 0 になると負の数になるのに対し、memcache は常に 0 になることです。
いいえ。 -1になりますが、ご自身で判断してください。
オプティミスティックロックソリューション
ロックをチェックせず、直接渡しますが、渡した後にバージョン番号を確認し、正しく操作しないとロールバックします(トランザクションサポートが必要です)
1 つの問題は、おそらく注文 2 と 3 のユーザーは理解できなかったが、注文 4 と 5 のユーザーは理解できたことです (この場合、デモを作成してテストするとわかります)