klock简介 Klock是博主基于redis开发的分布式锁spring-boot starter组件,使得项目拥有分布式锁能力变得异常简单,支持spring boot,和spirng mvc等spring相关项目。基于注解驱动,支持spring Spel,方便的定义锁的key的粒度。项目已开源,这次主要新增了锁等待超时和锁释放超时的处理策略。 项目地址: https://gitee.com/kekingcn/spring-boot-klock-starter 本次更新内容 本次更新主要新增了【锁等待超时】和【...
公司内部分享系列-分布式锁相关
前言碎语 以下内容为博主准备在公司内部分享【分布式锁】相关列的提纲,全文基本都是关键字,分享过程全靠编了,尽量涵盖多线程以及锁分布式锁的各种使用技巧 和使用场景吧。 和锁相关的东西? 多线程、高并发、大流量、资源保护、并行、串行 锁的使用场景? 了解了以上的和锁相关的东西后,我们大概知道了锁的使用场景,如: 多线程高并发下的资源保护,有序的消费资源...
spring-boot-klock-starter分布式锁项目开源
前言碎语 spring-boot-klock-starter是一个基于redis的分布式锁spring boot starter组件,使得项目拥有分布式锁能力变得异常简单,支持spring boot,和spirng mvc等spring相关项目, 使用和接入都非常简单方便,现开源出来,给所有需要分布式锁能力的项目提供一个方案 项目地址: https://gitee.com/kekingcn/spring-boot-klock-starter 快速开始 spring boot项目接入 1.添加lock starter组件依赖,目前还没上传到公共仓库...
spring boot集成redisson的最佳实践
前言碎语 redisson是redis的java客户端程序,使用度比较广,在和spring的集成中官方给出的实例也是比较多,比较方便,具体可查看我之前的一篇博文 《spring集成redis客户端jedis以及redisson 》 ,可以提供yaml,json配置文件来实例化redissonClient,如果我们的程序是spring boot,一般都是使用application.properties来配置我们应用配置参数,如何使用application.properties的方式配置redisson呢,请看下文? 1....
redisson应用之分布式服务
redisson分布式远程调用 1. 分布式远程服务(Remote Service) 基于Redis的Java分布式远程服务,可以用来通过共享接口执行存在于另一个Redisson实例里的对象方法。换句话说就是通过Redis实现了Java的远程过程调用(RPC)。分布式远程服务基于可以用POJO对象,方法的参数和返回类不受限制,可以是任何类型。 分布式远程服务(Remote Service)提供了两种类型的RRemoteService实例: 服务端(远端)实...
redisson应用之分布式锁和同步器
redisson分布式锁和同步器 1. 可重入锁(Reentrant Lock) Redisson的分布式可重入锁RLock Java对象实现了java.util.concurrent.locks.Lock接口,同时还支持自动过期解锁。 RLock lock = redisson.getLock("anyLock"); // 最常见的使用方法 lock.lock(); // 支持过期解锁功能 // 10秒钟以后自动解锁 // 无需调用unlock方法手动解锁 lock.lock(10, TimeUnit.SECONDS); // 尝试加锁,最多等待100秒,上锁以后10秒自动解锁 boolean res = lock.tryLoc...
redisson应用之分布式集合
redisson分布式集合 1. 映射(Map) Redisson的分布式Map结构的RMap Java对象实现了java.util.concurrent.ConcurrentMap接口和java.util.Map接口。同时还保持了元素的插入顺序。该对象的最大容量受Redis限制,最大元素数量是4 294 967 295个。 RMapString, SomeObject map = redisson.getMap("anyMap"); SomeObject prevObject = map.put("123", new SomeObject()); SomeObject currentObject = map.putIfAbsent("323", new SomeObject()); SomeObject obj = map.remove("123"); map....