//解决高并发问题
String locak = "key";
//局部变量,不会存在并发问题
String uuid = UUID.randomUUID().toString();
Boolean aBoolean1 = redisTemplate.opsForValue().setIfAbsent(locak, uuid, 10, TimeUnit.SECONDS);
try {
//业务逻辑,分布式锁
System.err.println(aBoolean1);
} finally {
if (redisTemplate.opsForValue().get(locak).equals(uuid)) {
redisTemplate.delete(locak);
}
}
2:redisson主类配置对象:
/**
* 创建redisson对象
* @return
*/
@Bean
public Redisson redisson(){
Config config = new Config();
config.useSingleServer().setAddress("redis://localhost:6379").setDatabase(0);
return (Redisson) Redisson.create(config);
}
可以直接注入redisson对象:
@Autowired Redisson redisson;
方法实现:
//创建锁对象
RLock lok = redisson.getLock("lok");
//创建锁对象
RLock lok = redisson.getLock("lok");
lok.lock();//相当于setIfAbsent
//设置锁
try {
//业务逻辑,分布式锁
System.err.println();
} finally {
//业务执行完后删除锁
lok.unlock();
}
}