负数计数: redis.hincrby(
User:${targetUser.id}
, "followerCount", -1)
我希望它停在 0
HINCRBY 运算返回增量运算后的新值。
redis> HSET myhash field 5
(integer) 1
redis> HINCRBY myhash field 1
(integer) 6
redis> HINCRBY myhash field -1
(integer) 5
如果您的 HINCRBY 操作返回 -1,则意味着该用户的 followerCount 为 0,因此不应减少。 因此,您可以将 HSET 触发为 0 以将其设置为零。 更好的方法是使用 redis transaction,它将:
我们还可以使用下面提到的方法,在某些情况下可能会有用。我知道这不是最佳解决方案,但它比每次都使用 hGet 更好。
const updatedVal = await redis.hIncrBy(KEY, FIELD, -1);
if (updatedVal < 0) {
await redis.hSet(KEY, FIELD, 0);
return false;
}
return true;