您现在的位置是:首页 >技术交流 >解决RedisTemplate 使用 setIfAbsent 做分布式锁出现返回值为 null 的问题网站首页技术交流

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

叶枫^_^ 2024-06-17 11:26:35
简介解决RedisTemplate 使用 setIfAbsent 做分布式锁出现返回值为 null 的问题

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

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

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

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

	/**
	 * @desc 扣减金额
	 **/
	@Transactional
    public ResultBean<Boolean> reduceAmount(ReduceAmountReq request, UserData userData
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。