成人一对一视频交友

接下来,更灵活的Redis分布式锁,火星人框架发布了3.0.39版本

elbert
elbert

如题,这次更新主要是优化Redis分布式锁的灵活性。

在要加锁的方法上添加 RedisLock 注解

@RedisLock(key=’自己定义一个密钥’,maxwait=3000,

retry=true,retryRate=100,timeOut=1000)

public int insert(){

返回1;

{}

该锁在事务打开之前获得,在事务提交之后解锁。只对MarsBean有效,对API和DAO无效

RedisLock 注解的参数解释

Key:唯一标识,确保全球唯一性

Retry:如果锁获取失败,是否要重试(真是,假否)?只有当设置为true时,下列属性才会生效|默认值为false

RetryRate:重试频率(重试多少毫秒)|默认100毫秒

最大等待时间:(重试几毫秒后放弃等待)|默认为3000毫秒

超时:到期时间(几毫秒后自动解锁)|默认为10000毫秒

如果不需要锁定整个方法,只需锁定一小部分代码,那么可以使用下面的方法

在 MarsBean 里面注入 MarsRedisLock 对象

@MarsBean(‘testService ‘)

公共类TestService {

@MarsWrite(‘marsRedisLock ‘)

私有MarsRedisLock marsRedisLock

{}

加锁

lockModel=新的lockMoDEL();

OckModel.setKey(‘设置一个密钥,在不同的业务中是唯一的,保证每个请求都是同一个密钥’);

OckModel.setValue(‘设置一个唯一的值,每个请求都是唯一的’);

//到期时间

ock model . settimeout(10000);

//重试频率(每几毫秒重试一次)

ock model . setretryrate(300);

//未获得锁。再试一次

lock MoDEL . SetRetry(true);

//最大重试时间(重试不成功直接放弃)

ock model . SetMaxWait(5000);

boolean has lock=marsredislock . lock(lock model);

if(haslock){

执行只能在锁定后执行的代码

{}

解锁

marsredislock . unlock(lockmodel . getkey()、lockmodel . getvalue());

Martian 框架官网

http://mars-framework.com

elbert
品牌