DECR返回负数咋办?

DECR返回负数很正常,是因为当前值已经小于0了。

解决办法根据你的实际需求来:

  1. 如果你需要避免负数:操作前先用 GET 检查值,或者改用 DECRBY 配合条件判断,只在值大于0时才执行减操作。

  2. 如果你允许负数:负数本身是有效结果,直接使用即可,无需处理。比如库存退换货场景,负数表示超卖或借用数量。

  3. 如果希望自动限到0:无法直接用 DECR 实现,需要先 GET 再判断,或者用 Lua 脚本原子化执行:先 GET 值,大于0才 DECR,否则不操作。

简单说:DECR 不是“减到0就不减”,而是“不管多少都减1”。你需要先确定业务上负数是否允许,再选择合适的处理方式。