#项目中遇到需要异步处理业务的地方,使用redis记录完成数,最终完成之后进行下一步操作#
普通的redis先get后增加处理值再set 在多线程异步的情况下会覆盖原来的值 和 mysql先查询后update一样有问题,会导致数据不准。
mysql有set column = column + num的方法
redis也有类似的方法
-
INCRBYFLOAT:对指定 key 的值进行浮点数增加操作。可以指定增加的浮点数值。
-
HINCRBY:对指定哈希字段的值进行增加操作。可以指定增加的整数值。
-
HINCRBYFLOAT:对指定哈希字段的值进行浮点数增加操作。可以指定增加的浮点数值。
-
ZINCRBY:对有序集合中指定成员的分值进行增加操作。可以指定增加的浮点数值。
ValueOperations<String, String> ops = redisTemplate.opsForValue();
Integer newValue = ops.increment(key, value).intValue();