DECR返回负数咋办?
DECR返回负数很正常,是因为当前值已经小于0了。
解决办法根据你的实际需求来:
-
如果你需要避免负数:操作前先用
GET检查值,或者改用DECRBY配合条件判断,只在值大于0时才执行减操作。 -
如果你允许负数:负数本身是有效结果,直接使用即可,无需处理。比如库存退换货场景,负数表示超卖或借用数量。
-
如果希望自动限到0:无法直接用 DECR 实现,需要先 GET 再判断,或者用 Lua 脚本原子化执行:先 GET 值,大于0才 DECR,否则不操作。
简单说:DECR 不是“减到0就不减”,而是“不管多少都减1”。你需要先确定业务上负数是否允许,再选择合适的处理方式。