Redisson 实现分布式锁
当我们的项目部署在多个服务器下时,有时会遇到一段代码只需要在一段时间内只需要执行一次的情况。此时就需要使用锁来实现,而java中的synchronized锁只是针对单个JVM实例的锁,在分布式的环境下无法无能为力。
实现分布式锁的方式有多种:
- 基于数据库(唯一索引)
- 基于缓存(Redis,memcached,tair)
- 基于Zookeeper
这里主要学习使用Redis来实现分布式锁
1.1 导入依赖
官方文档:
GitHub - redisson/redisson: Redisson - Easy Redis Java client with features of In-Memory Data Grid….
redisson/redisson-spring-boot-starter at master · redisson/redisson · GitHub
1.1.1 使用自定义redisson客户端
导入redisson依赖
1 | <dependency> |
RedissonConfig.class
1 | package com.me.yiqi.config; |
测试类
1 |
|
1.1.2 使用 redisson-spring-boot-starter
不太推荐这种方式,因为redisson迭代速度较快,需要注意导入的版本号
导入redisson-spring-boot-starter依赖
1 | <dependency> |
但需要注意springboot的版本和这个依赖的版本对应关系
配置application文件
Using common Spring Boot 3.x+ settings:
1 | spring: |
Using common Spring Boot up to 2.7.x settings:
1 | spring: |
导入后即可使用以下Bean:
RedissonClientRedissonRxClientRedissonReactiveClientRedisTemplateReactiveRedisTemplate
1.2 使用
下面是一个缓存预热的定时任务案例:
1 | package com.me.yiqi.job; |