• Stars
    star
    246
  • Rank 164,726 (Top 4 %)
  • Language
    Java
  • Created over 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

redis实现分布式锁 Spring Boot core for Redisson RedissonLock

Redisson实现分布式锁

有关Redisson实现分布式锁前面写了三篇博客作为该项目落地的铺垫。

1、Redisson实现分布式锁(1)---原理

2、Redisson实现分布式锁(2)—RedissonLock

3、Redisson实现分布式锁(3)—项目落地实现

该项目可以直接运用于实际开发中,作为分布式锁使用。

一、项目概述

1、技术架构

项目总体技术选型

SpringBoot2.1.5 + Maven3.5.4 + Redisson3.5.4 + lombok(插件)

2、加锁方式

该项目支持 自定义注解加锁 常规加锁 两种模式

自定义注解加锁

 @DistributedLock(value="goods", leaseTime=5)
  public String lockDecreaseStock(){
    //业务逻辑
  }

常规加锁

 //1、加锁
 redissonLock.lock("redisson", 10);
 //2、业务逻辑
 //3、解锁
 redissonLock.unlock("redisson");

3、Redis部署方式

该项目支持四种Redis部署方式

1、单机模式部署
2、集群模式部署
3、主从模式部署
4、哨兵模式部署

该项目已经实现支持上面四种模式,你要采用哪种只需要修改配置文件application.properties,项目代码不需要做任何修改。

4、项目整体结构

redis-distributed-lock-core # 核心实现
|
---src
      |
      ---com.oujiong.redisson
                           |# 通过注解方式 实现分布式锁
                           ---annotation
                           |# 配置类实例化RedissonLock
                           ---config
                           |# 放置常量信息
                           ---constant
                           |# 读取application.properties信息后,封装到实体
                           ---entity    
                           |# 支持单机、集群、主从、哨兵 代码实现
                           ---strategy

redis-distributed-lock-web-test # 针对上面实现类的测试类
|
---src
      |
      ---java
            |
            ---com.oujiong.controller
                                 |# 测试 基于注解方式实现分布式锁
                                 ---AnnotatinLockController.java
                                 |# 测试 基于常规方式实现分布式锁
                                 ---LockController.java
      ---resources                
           | # 配置端口号 连接redis信息(如果确定部署类型,那么将连接信息放到core项目中)
            ---application.properties

acda64387e0896604b5932dc433c8b77

More Repositories

1

spring-boot-sharding-sphere

SpringBoot + ShardingSphere 实现读写分离 分库分表
Java
362
star
2

spring-boot-netty-websocket-huobi

SpringBoot + Netty开发WebSocket服务器,时时获取火币(huobi)交易所推送过来的交易对最新数据。
Java
128
star
3

mall-manage-system

vue-cli 3.0 + element-ui + vue-router + axios + Vuex + Mock + echarts 实现电商管理系统后台
Vue
128
star
4

spring-cloud-rocketmq-transaction

SpringCloud + RocketMQ 实现分布式事务(transaction)
Java
109
star
5

spring-boot-wechat-login

Springboot 实现微信扫码授权登陆,获取用户基本信息
Java
77
star
6

spring-boot-websocket-study

SpringBoot+Websocket 实现 1、公告功能 2、单人聊天功能 3、比特币时时推送功能 4、群聊功能,时时在线用户信息
Java
71
star
7

springboot-redis-caffeine-cache

Caffeine + Redis实现二级缓存框架。支持动态配置是否开启一级缓存、二级缓存。支持多个节点部署,多节点之间一级缓存通过redis订阅/发布功能来通知其他节点进行清理缓存的操作。
Java
70
star
8

spring-boot-mybatis-interceptor

mybatis自定义主键插件,通过该插件生成分布式唯一雪花ID作为数据库表的主键。
Java
53
star
9

spring-boot-study

springboot学习项目
Java
50
star
10

spring-boot-wechat-pay

SpringBoot 实现微信扫码支付功能
Java
27
star
11

spring-boot-redis-ip-limiter

Springboot + Redis 组件,实现一个分布式接口IP访问限流功能
Java
20
star
12

spring-boot-redis-lua

SpringBoot + Redis布隆过滤器。主要实现以下功能 : 1、几种常用方式判断当前key是否存在的性能进行比较。2、通过Lua脚本批量插入数据到redis布隆过滤器,并校验该数据在布隆过滤器中
Java
19
star
13

spring-boot-operate-log

基于SpringBoot+注解的方式获取操作日志,对业务代码无侵入。注解支持SPEL表达式、函数、三目运算
Java
16
star
14

spring-cloud-study

SpringCloud 注册发现、Feign服务调用、Hystrix实战、Zuul项目搭建、mysql实现配置中心
Java
16
star
15

spring-boot-many-data-source

Springboot + Druid 实现多数源
Java
12
star
16

spring-cloud-alibaba-study

学习spring-cloud-alibaba一些组件,包括GateWay、 Feign、 Nacos、 Zipkin、 Sentinel
Java
11
star
17

BDY-reptile

OkHttp爬取接口,通过获取接口返回数据,循环调用接口获取所有数据
Java
9
star
18

spring-boot-exception-notice

springBoot 集成钉钉机器人、企业微信、邮箱 实现异常通知。配置简单,开箱即用,同时异常信息也非常详细,帮助开发者快速定位问题
Java
9
star
19

spring-boot-security-study

Springboot +Security 实现密码,短信验证码登陆。OAuth2功能还在学习中......
Java
7
star
20

mybatis-desensitization-plugin

基于mybatis插件方式对一些敏感字段进行脱敏。目前支持姓名、手机号、座机号码、银行卡、身份证号、邮箱、地址等进行脱敏。也可以自定义字段脱敏。配置规则灵活,易扩展。
Java
6
star
21

SpringbootAcitveMQ

springboot整合ActiveMQ
Java
3
star