//解决高并发问题 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(); } }