分布式锁 哨兵模式_redisson-spring-boot-starter

redisson-spring-boot-starter

目前有很多项目还在使用jedis的 setNx 充当分布式锁,然而这个锁是有问题的,redisson是java支持redis的redlock的唯一实现,

集成该项目后只需要极少的配置.就能够使用redisson的全部功能. 目前支持

集群模式,云托管模式,单Redis节点模式,哨兵模式,主从模式 配置. 支持 可重入锁,公平锁,联锁,红锁,读写锁 锁定模式

介绍

我们为什么需要redisson?

redisson目前是官方唯一推荐的java版的分布式锁,他支持 redlock.具体请查看 官方文档

jedis为什么有问题?

目前jedis是只支持单机的.

jedis setNx 和设置过期时间是不同步的,在某些极端的情况下会发生死锁.导致程序崩溃.如果没有设置value,

线程1可能会释放线程2的锁 详情看下这篇 博客

软件架构

spring boot

安装教程

引入 pom.xml

com.zengtengpeng

redisson-spring-boot-starter

1.0.1

使用说明

在 application.properties 增加

#单Redis节点模式

redisson.singleServerConfig.address=127.0.0.1:6379

2.在方法增加 @Lock 注解

//支持 spel 表达式 如果后面需要接字符串的话请用`+`连接. 字符串一定要打`单引号`

@Lock(keys = "#user.name+'locks'")

public String test(User user) {

System.out.println("进来了test");

return "test";

}

完毕

进阶篇

@Lock 注解参数介绍

/**

* REENTRANT(可重入锁),FAIR(公平锁),MULTIPLE(联锁),REDLOCK(红锁),READ(读锁), WRITE(写锁),

* AUTO(自动模式,当参数只有一个.使用 REENTRANT 参数多个 MULTIPLE)

*/

LockModel lockModel() default LockModel.AUTO;

/**

* 需要锁定的keys

* @return

*/

String[] keys() default {};

/**

* 锁超时时间,默认30000毫秒(可在配置文件全局设置)

* @return

*/

long lockWatchdogTimeout() default 0;

/**

* 等待加锁超时时间,默认10000毫秒 -1 则表示一直等待(可在配置文件全局设置)

* @return

*/

long attemptTimeout() default 0;

如何使用redisson 客户端实现自定义操作,只需要在spring 容器中注入redisson客户端就行,如下:

@Autowired

private RedissonClient redis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值