这里写目录标题
redis分布式锁的实现
本文作为刚初学redis分布式锁的个人整理文档,防止忘掉
1.一般使用jedis 实现分布式锁,总会面临各种问题,对于这些问题的处理,redisson 就应运而生了.通过redisson可以轻松处理redis分布式锁面临的大多数问题,
@SpringBootApplication
public class RedisApplication {
public static void main(String[] args) {
SpringApplication.run(RedisApplication.class, args);
}
//通过Config 将设置好的客户端注入spring容器中,可以直接进行使用
@Bean
public Redisson getRedisson() {
Config config = new Config();
// 这里是对于redis集群的处理方法
//如果是单机模式的话, 可以说过config.useSingleServer()进行设置
config.useClusterServers().addNodeAddress("redis://192.168.31.81:6379", "redis://192.168.31.81:6380", "redis://192.168.31.81:6381");
return (Redisson) Redisson.create(config);
}
}
controller层的方法的书写—进行redis分布式锁的实现
@RestController
@RequestMapping("redis")
public class RedisController {
@Autowired
private Redisson redisson;
private String LOCK_REDIS="gao";
@PostMapping("lock")
public ResponseEntity<String> getLock(){
RLock lock = redisson.getLock(LOCK_REDIS);
// 锁的过期时间
lock.lock(40, TimeUnit.SECONDS);
System.out.println("拉阿拉阿拉");
try {
// 通过设置线程休眠时间,能观察到分布式锁的运行过程.
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
lock.unlock();
return ResponseEntity.ok("ok");
}