spring-boot-lock-starter

Redis 分布式锁
授权协议 Apache-2.0
开发语言 Java
所属分类 程序开发、 其他开发相关
软件类型 开源软件
地区 国产
投 递 者 汲涵育
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

基于redis的分布式锁spring-boot starter组件,使得项目拥有分布式锁能力变得异常简单,支持spring boot,和spirng mvc等spring相关项目

快速开始

spring boot项目接入

1.添加lock starter组件依赖,目前还没上传到公共仓库,需要自己下源码build

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-klock-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

2.application.properties配置redis链接:spring.klock.address=127.0.0.1:6379

3.在需要加分布式锁的方法上,添加注解@Klock,如:

@Service
public class TestService {

    @Klock(waitTime = Long.MAX_VALUE)
    public String getValue(String param) throws Exception {
        if ("sleep".equals(param)) {//线程休眠或者断点阻塞,达到一直占用锁的测试效果
            Thread.sleep(1000 * 50);
        }
        return "success";
    }
}

  1. 支持锁指定的业务key,如同一个方法ID入参相同的加锁,其他的放行。业务key的获取支持Spel,具体使用方式如下 输入图片说明

spring mvc项目接入

其他步骤和spring boot步骤一样,只需要spring-xx.xml配置中添加KlockAutoConfiguration类扫描即可,如:

<context:component-scan base-package="org.springframework.boot.autoconfigure.klock.KlockAutoConfiguration"/>

使用参数说明

配置参数说明

    spring.klock.address  : redis链接地址
    spring.klock.password :redis密码
    spring.klock.database :redis数据索引
    spring.klock.waitTime :获取锁最长阻塞时间(默认:60,单位:秒)
    spring.klock.leaseTime:已获取锁后自动释放时间(默认:60,单位:秒)
    spring.klock.cluster-server.node-addresses :redis集群配置 如 127.0.0.1:7000,127.0.0.1:7001,127.0.0.1:7002
    spring.klock.address 和 spring.klock.cluster-server.node-addresses 选其一即可

@Klock注解参数说明

@Klock可以标注四个参数,作用分别如下

name:lock的name,对应redis的key值。默认为:类名+方法名

lockType:锁的类型,目前支持(可重入锁,公平锁,读写锁)。默认为:公平锁

waitTime:获取锁最长等待时间。默认为:60s。同时也可通过spring.klock.waitTime统一配置

leaseTime:获得锁后,自动释放锁的时间。默认为:60s。同时也可通过spring.klock.leaseTime统一配置
  • 一、软件介绍        spring-boot-lock-starter 是基于redis实现的简单分布式锁。软件面向接口编程,同时兼顾基于zk或者其他实现的方便扩展。基于redis的分布式锁实现,主要依赖以reids 的set命令 和get del 的lua脚本。同时对锁做了注解封装,预留是否启用分布式锁、和是否启用默认redis实现类完成分布式锁的扩展。 二、核心实现 1,加锁过程

  • lock-spring-boot-starter是一个基于Spring Boot的starter机制编写的分布式锁工具。 与其他分布式锁不同的是,使用起来更方便快捷,只需要通过注解@Lock的方式即可实现对方法进行加锁。 官网地址:http://tooleek.gitee.io/lock-spring-boot-starter/ 支持的锁类型 可重入锁、公平锁、联锁、红锁、读锁、写锁 入门示例 1

  • 目录 1、项目pom文件依赖,父级项目spring-boot-starter-parent 2、再看spring-boot-starter-parent 3、spring-boot-dependencies-2.2.2.RELEASE.pom 4、总结 使用简单的Springboot生成项目很简单,简单归简单,那他究竟默认都帮我们引入了哪些包。pom文件的依赖关系又是怎样的。 让我们一探究竟。  

  • 填坑之路!SpringBoot导包坑之spring-boot-starter-parent 大誌 2018-11-14 21:03:25 104522 收藏 83 分类专栏: Bug 文章标签: SpringBoot 版权 2020/02/12 补充:本人版本maven-3.3.9 2020/04/29 补充:如果你是公司项目,用的是公司私有仓库,那你应该先问问公司负责仓库管理的同事,仓库内有没有

  • spring-boot-starter-data-redis https://blog.csdn.net/yeyinglingfeng/article/details/87790700?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-blog-2defaultOPENSEARCHdefault

  • redisson-spring-boot-starter   spring boot 配置:  spring.redis.redisson.config: classpath:redisson-beta.yml 或者 spring.redis.redisson.config: classpath:redisson-product.yml 配置类: org.redisson.spring.start

  • SpringBoot整合Redisson实战(通过redisson-spring-boot-starter) 点进来看整合的小伙伴肯定都了解Redisson的概念和背景了,这里就直接开始; SpringBoot整合Redisson有个比较好用的starter包就是redisson-spring-boot-starter,这也是官方比较推荐的配置方式,本文就使用redisson-spring-boo

  • 如果你在使用spring-boot-starter-parent 2.0.1版本时出现下面错误 *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the applicat

 相关资料
  • lock-spring-boot-starter 介绍 基于 redisson 实现的 spring boot starter 分布式锁框架,实现了可重入锁、公平锁、联锁、红锁、读写锁等常用锁的方式,并支持集群模式下的 redis 。 使用说明 创建 Spring Boot 项目 引入 maven 依赖  <dependency>     <groupId>org.august.spring.bo

  • 我有两个微服务。Item micro服务将数据填充到redis缓存中。这是成功的,我也能够在同一个微服务中检索数据。另一个微服务是订单服务。为了获得服务,我需要从redis缓存中获取项目服务数据,因为我需要使用分布式缓存。然而,我无法从redis缓存中访问缓存数据以获得服务。 这是我的实现代码 物品服务 重新配置。JAVA 重新发行。JAVA 订单服务 重新配置。JAVA 我在订单服务中创建了It

  • 1. 前言 一个项目中使用多个数据源的需求,我们在日常工作中时常会遇到。 以商城系统为例,有一个 MySQL 的数据库负责存储交易数据。公司还有一套 ERP 企业信息化管理系统,要求订单信息同步录入 ERP 数据库,便于公司统一管理,而该 ERP 系统采用的数据库为 SQL Server 。 此时,就可以在 Spring Boot 项目中配置多个数据源。另外,使用多数据源后,需要采用分布式事务来保

  • 本系统中的分布式锁设计用于Storm多个线程实例抢占Redis缓存资源时出现的事务性问题,这个事务性问题是由客户端本身业务逻辑需求产生的,无法在服务端进行有效处理,需给出一个分布式资源同步的方案,此处我们采用了分布式锁来完成这项设计。 锁是编程中非常常见的概念。在维基百科上对锁有个相当精确的定义:在计算机科学中,锁是一种在多线程环境中用于强行限制资源访问的同步机制。锁被设计用于执行一个互斥的并发控

  • 一、分布式锁 数据库的唯一索引 Redis 的 SETNX 指令 Redis 的 RedLock 算法 Zookeeper 的有序节点 二、分布式事务 2PC 本地消息表 三、CAP 一致性 可用性 分区容忍性 权衡 四、BASE 基本可用 软状态 最终一致性 五、Paxos 执行过程 约束条件 六、Raft 单个 Candidate 的竞选 多个 Candidate 竞选 数据同步 参考 一、分

  • 主要内容:Redis分布式锁介绍,Redis分布式锁命令在分布式系统中,当不同进程或线程一起访问共享资源时,会造成资源争抢,如果不加以控制的话,就会引发程序错乱。此时使用分布式锁能够非常有效的解决这个问题,它采用了一种互斥机制来防止线程或进程间相互干扰,从而保证了数据的一致性。 提示:如果对分布式系统这一概念不清楚,可参考百度百科《分布式系统》,简而言之,它是一种架构、一种模式。 Redis分布式锁介绍 分布式锁并非是 Redis 独有,比如 MySQ