解决RedisTemplate 使用 setIfAbsent 做分布式锁出现返回值为 null 的问题

我们现在较少使用RedisTemplate 提供的setIfAbsent 做分布式锁,解决并发场景问题,一般使用成熟的三方工具Redisssion来解决分布式锁问题.但是有时候还是需要手动通过RedisTemplate 提供的setIfAbsent实现简化的分布式锁.

此处记录一下使用RedisTemplate 的 setIfAbsent 做分布式锁出现返回值为 null 的问题和解决方法.

1.场景描述
防止短时间内重复点击操作,多个请求对应着多个线程同时操作同一共享资源导致的线程安全问题.

见如下实现
(1).扣减金额操作

	/**
	 * @desc 扣减金额
	 **/
	@Transactional
    public ResultBean<Boolean> reduceAmount(ReduceAmountReq request, UserData userData

你可能感兴趣的:(分布式,java,spring)