相对于 Jedis 这种原生态的应用,Redisson 对 Redis 请求做了较多的封装,对于锁,也提供了对应的方 法可以直接使用:
Config config = new Config();
//配置 Redis 基本连接信息
config.useSingleServer().setAddress("redis://127.0.0.1:6379").setPassword("123");
//获取一个 RedissonClient 对象
RedissonClient redisson = Redisson.create(config);
//获取一个锁对象实例
RLock lock = redisson.getLock("lock");
try {
//获取锁
boolean b = lock.tryLock(500, 1000, TimeUnit.MILLISECONDS);
if (b) {
//获取到锁了,开始写业务
RBucket<Object> bucket = redisson.getBucket("javaboy");
bucket.set("www.javaboy.org");
Object o = bucket.get();
System.out.println(o);
}else{
System.out.println("没拿到锁");
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
//释放锁
lock.unlock();
}
在这段代码中,核心的就是 lock.tryLock(500, 1000, TimeUnit.MILLISECONDS); ,第一个参数是 尝试加锁的等待时间为 500 毫秒,第二个参数表示锁的超时时间为 1000 毫秒,也就是这个锁在 1000 毫秒后会自动失效。 小伙伴们发现,这和我们在方案一里边配置的参数是一样的,其实思路是不变的,Redisson 只不过是 将我们写的和锁相关的方法封装起来了而已。