Martian框架发布 3.0.3 版本,Redis分布式锁

项目简介Martian 是一个声明式 API 编程(DAP)框架 , 可以帮助你快速开发后端服务 。

  • 以HttpServer作为 http服务 , 彻底脱离Tomcat这一类的Web容器和Servlet , 同时也让项目减少了几个依赖
  • 声明式API , 让Controller变成了一个interface , 降低了开发的工作量
  • 拥有其他web框架 拥有的大部分功能 , 比如AOP,IOC,声明式事务,异常监听等
  • 拥有自主开发的持久层框架 , 并天然的集成到了Martian中
  • 支持分布式开发
更新内容在要加锁的方法上添加RedisLock注解@RedisLock(key = "自己定义一个key", maxWait = 3000,retry = true, retryRate = 100, timeOut = 1000)public int insert(){return 1;}这个锁会在事务开启之前获取 , 在事务提交以后解锁 , 并且只对MarsBean有效 , 对API和DAO无效
RedisLock注解的参数解释
  • key: 唯一标识 , 保证全局唯一
  • retry: 如果获取锁失败 , 是否重试(true 是 , false 否) , 只有设置为true , 下面的几个属性才生效 | 默认为 false
  • retryRate: 重试频率(多少毫秒重试一次)| 默认100毫秒
  • maxWait: 最大等待时间(重试多少毫秒以后 , 就放弃等待) | 默认3000毫秒
  • timeOut: 失效时间(多少毫秒后 , 自动解锁) | 默认10000毫秒
如果你不需要锁住整个方法 , 只需要锁一小段代码 , 那么可以用下面的方式
在MarsBean里面注入MarsRedisLock对象@MarsBean("testService")public class TestService {@MarsWrite("marsRedisLock")private MarsRedisLock marsRedisLock;}加锁LockModel lockModel = new LockModel();ockModel.setKey("设置一个key , 不同业务之间唯一 , 保证每次请求都是一样的key");ockModel.setValue("设置一个唯一的value , 每次请求都是唯一的");// 失效时间ockModel.setTimeOut(10000);// 重试频率(每隔几毫秒重试一次)ockModel.setRetryRate(300);// 没获取到锁 , 是否重试lockModel.setRetry(true);// 最大重试时间(重试多久没成功 , 就直接放弃)ockModel.setMaxWait(5000);Boolean haslock = marsRedisLock.lock(lockModel);if(haslock){执行加锁后才能执行的代码}解锁【Martian框架发布 3.0.3 版本,Redis分布式锁】marsRedisLock.unlock(lockModel.getKey(), lockModel.getValue());功能演示
Martian框架发布 3.0.3 版本,Redis分布式锁文章插图
Martian框架发布 3.0.3 版本,Redis分布式锁文章插图
Martian框架发布 3.0.3 版本,Redis分布式锁文章插图