深圳网站建设总部,贸易公司注册条件,内容营销什么意思,快速提高网站关键词排名优化Redisson简介Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象#xff0c;还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingD…Redisson简介Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service) Redisson提供了使用Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern)从而让使用者能够将精力更集中地放在处理业务逻辑上。Redisson使用1.引入依赖org.redissonredisson3.12.02.编写配置类初始化一个RedissonClient对象import org.redisson.Redisson;import org.redisson.api.RedissonClient;import org.redisson.config.Config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.io.IOException;/*** ClassName MyRedissonConfig.java* Author 拾光* Date 2020年07月25日 18:14:00* Description redisson配置类*/Configurationpublic class MyRedissonConfig {/*** 所有对redisson的使用都是通过RedissonClient来使用* return* throws IOException*/Bean(destroyMethodshutdown)public RedissonClient redisson() throws IOException {//1 创建配置Config config new Config();config.useSingleServer().setAddress(redis://10.211.55.5:6379);//2.根据Config创建出RedissonClientreturn Redisson.create(config);}}以上方式为但节点模式也可以配置集群模式Config config new Config();config.useClusterServers().setScanInterval(2000) // 集群状态扫描间隔时间单位是毫秒//可以用rediss://来启用SSL连接.addNodeAddress(redis://127.0.0.1:7000, redis://127.0.0.1:7001).addNodeAddress(redis://127.0.0.1:7002);RedissonClient redisson Redisson.create(config);3.使用分布式锁进行redis占锁AutowiredRedissonClient redisson;最常见的使用方法RLock lock redisson.getLock(my-lock);// 最常见的使用方法lock.lock();解释说明使用基本锁以后redisson使用了自动续期如果业务超长运行期间自动续上30s,不用担心业务时间长锁自动过期被删掉。大家都知道如果负责储存这个分布式锁的Redisson节点宕机以后而且这个锁正好处于锁住的状态时这个锁会出现锁死的状态。为了避免这种情况的发生Redisson内部提供了一个监控锁的看门狗它的作用是在Redisson实例被关闭前不断的延长锁的有效期。默认情况下看门狗的检查锁的超时时间是30秒钟也可以通过修改Config.lockWatchdogTimeout来另行指定。另外Redisson还通过加锁的方法提供了leaseTime的参数来指定加锁的时间。超过这个时间后锁便自动解开了。// 加锁以后10秒钟自动解锁// 无需调用unlock方法手动解锁lock.lock(10, TimeUnit.SECONDS);// 尝试加锁最多等待100秒上锁以后10秒自动解锁boolean res lock.tryLock(100, 10, TimeUnit.SECONDS);if (res) {try {...} finally {lock.unlock();}}项目使用以及说明public String hello(){//获取一把锁只要锁的名字一样就是同一把锁RLock lock redisson.getLock(my-lock);//2。加锁// lock.lock();//1).redisson的自动续期如果业务超长运行期间自动续上30s,不用担心业务时间长锁自动过期被删掉//2).加锁得业务只要运行完成就不会给当前锁续期即使不手动解锁锁默认在30s后自动删除lock.lock(10, TimeUnit.SECONDS);//10秒以后自动解锁自动解锁时间一定要大于业务时间// lock.lock(10, TimeUnit.SECONDS)在锁时间到了以后不会自动续期//1.如果我们传递了锁的超时时间就发送给redis执行脚本进行站锁默认时间就是我我们传递的时间//2.如果我们危制定锁的超时时间就使用lockWatchdogTimeout 30 * 1000;看门狗默认时间//只要站锁成功就会启动定时任务(重新给锁设置过期时间)新的时间就是看门狗的默认时间每10秒都会自动续期续成满时间//最佳实战//1)lock.lock(10, TimeUnit.SECONDS) 省略了整个续期操作手动解锁try {System.out.println(加锁成功执行业务lock.getName());Thread.sleep(30000);} catch (Exception e){System.out.println(e);} finally{//解锁System.out.println(释放锁lock.getName());lock.unlock();}return hello;}本文地址https://blog.csdn.net/weixin_43691942/article/details/107591137如您对本文有疑问或者有任何想说的请点击进行留言回复万千网友为您解惑