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

喜欢吃鱼的青年 2020-10-17 21:55:50 ⋅ 870 阅读

项目简介

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){
    执行加锁后才能执行的代码
}

解锁

marsRedisLock.unlock(lockModel.getKey(), lockModel.getValue());

功能演示

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

 

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

 

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

 

 
 

全部评论: 0

    我有话说:

    「尝鲜」SpringBoot 快速整合Swagger 3.0

    第一步:Maven引入Swagger3.0 starter依赖 Maven项目中引入springfox-boot-starter依赖: <dependency> <

    Redis系列四

      本文目标 1. 熟悉乐观ABA概念 2. 理解掌握redis事务以及watch回滚; 3. 实战redis 乐观 乐观是一种不会阻塞其他线程并发的机制,它不会使用数据库的

    Redisson 3.15.0 发布,官方推荐的 Redis 客户端

    Redisson 3.15.0发布,这是一个 Java 编写的 Redis 客户端,具备驻内存数据网格(In-Memory Data Grid)功能,并获得了 Redis 的官方推荐

    Redisson 3.13.6 发布,官方推荐的 Redis 客户端

    Redisson 3.13.6 已发布,这是一个 Java 编写的 Redis 客户端,具备驻内存数据网格(In-Memory Data Grid)功能,并获得了 Redis 的官方推荐

    Python ORM框架SQLAlchemy 1.3.20 发布

    SQLAlchemy 1.3.20 发布了。SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象映射(ORM)框架。它包含整套企业级持久化模式,专门用于高效和高性能的数据库

    Jedis 3.5.0 发布Redis 的 Java 客户端开发包

    Jedis 3.5.0 发布了。Jedis 是 Redis 官方推荐的面向 Java 的操作 Redis 客户端,与新版本Redis 完全兼容。 本次更新内容包括: 增强功能 通过 COUNT

    Apache ZooKeeper 3.7.0 发布分布式服务框架

    Apache ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。ZooKeeper 曾经是 Hadoop 的一个子项目

    Serverless Framework 2.3.0 发布

    Serverless 架构开发框架 Serverless Framework 发布了 2.3.0 版本,该框架使用 AWS Lambda、Azure Functions、Google

    Scala 3 来了,Dotty 发布 3.0.0-M1 版本

    Dotty 发布3.0 的首个里程碑版本 3.0.0-M1,Dotty 作为 Scala 尝试新的语言概念以及编译器技术的研究平台,它最终将成为 Scala 3.0。 Dotty 对

    OkHttps v3.0.0 发布,对 OkHttp3 轻量封装的框架

    OkHttps v3.0.0 已经发布,此版本更新内容包括: 1、项目分割,分离出 data 项目单独维护(JSON、XML 等结构化数据的统一抽象 API):https://gitee.com

    PowerJob v3.3.2 已经发布分布式任务调度中间件

    PowerJob v3.3.2 已经发布,PowerJob 是全新一代分布式调度与计算框架,能让您轻松完成作业的调度与繁杂任务的分布式计算。 此版本更新内容包括: Features 支持控制台查看

    ElasticJob 3.0.0-beta 发布,丰富的报警机制集成

    本周Apache ShardingSphere团队很高兴的向大家宣布: ElasticJob-3.0.0-beta 和 ElasticJob UI-3.0.0-beta 的新版本正式发布

    Apache Wicket 9.3.0 发布,Java Web 开发框架

    Apache Wicket 9.3.0 现已发布。Wicket 是一个 Java 语言的 Web 开发框架,与 Struts、WebWork、Tapestry 相类似,其特点在于对

    分布式 NewSQL 数据库TiDB 3.1.0 版本发布,修复多项问题

    TiDB 是一款定位于在线事务处理/在线分析处理的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。

    Taro 3.0.17 发布,BAT 小程序、H5 与 RN 端统一框架

    Taro 3.0.17 发布了。Taro 是一套遵循 React 语法规范的多端统一开发框架,支持用 React 的方式编写一次代码,生成能运行在微信小程序/百度智能小程序/支付宝小程序、H5 与

    Taro 3.0.22 发布,BAT 小程序、H5 与 RN 端统一框架

    Taro 3.0.22 发布了。Taro 是一套遵循 React 语法规范的多端统一开发框架,支持用 React 的方式编写一次代码,生成能运行在微信小程序/百度智能小程序/支付宝小程序、H5 与

    Redis 6.0.10 发布维护版本

    Redis 6.0.10 现已发布,这是一个维护版本,升级迫切性等级为中等:修复了一些具有中等影响的错误。具体更新内容如下: Command behavior changes