spring-redis 自带分布式锁实现
2023-09-27 14:24:38 时间
前言
以前还傻傻的自己写分布式锁实现:基于缓存或 zookeeper 的分布式锁实现。果然,你能想到的轮子,99% 都已经有人造好了,并且,比你自己造的好的多。
RedisLockRegistry
- 依赖
implementation("org.springframework.boot:spring-boot-starter-data-redis")
implementation("org.springframework.integration:spring-integration-redis")
- 配置
@Configuration
class RedisLockConfiguration {
@Bean
fun redisLockRegistry(redisConnectionFactory: RedisConnectionFactory): LockRegistry {
return RedisLockRegistry(redisConnectionFactory, "redis-lock", 60000L * 60)
}
}
LockRegistry
除了提供 RedisLockRegistry
的实现,还提供了 DefaultLockRegistry
等单机锁实现;
RedisLockRegistry
提供了两种 Redis 分布式锁实现,一种是 RedisSpinLock
,通过周期性(100ms)检查是否可以获取锁来获取锁;一种是 RedisPubSubLock
,锁是通过 redis pub-sub 订阅获取的;默认是 RedisSpinLock
。
- 使用
val lock = lockRegistry.obtain("lock")
if (lock.tryLock()) {
try {
// 业务实现
} finally {
lock.unlock()
}
}
相关文章
- Spring Boot 操作 Redis 的各种实现
- 使用bitnamiredis-sentinel部署Redis 哨兵模式
- Redis开发与运维. 2.3 哈希
- Spring Cache + Redis;用Spring Cache的注解自动管理Redis缓存
- Redis protected-mode属性解读
- spring boot + shiro + redis 整合(完整)
- Redis——maven、spring、jedis快速搭建redis工程
- Redis+Nginx+ 设计模式 +Spring 全家桶 +Dubbo 技术精选合集
- Spring Boot + Redis 处理 Session 共享
- Redis高可用概述—持久化,主从复制,哨兵模式,集群模式
- CentOS7下搭建Redis主从复制
- Redis(二)CentOS7安装Redis4.0.10与集群搭建
- SpringMVC集成Redis
- redis Key相关命令
- redis 学习
- Spring Boot + Redis 实现分布式锁
- PHP+Redis 实例 页面缓存
- 浅析为什么使用redis、redis的4个常见问题、单线程redis为什么快、IO多路复用机制、redis数据类型及应用场景、redis过期策略及内存淘汰机制、双写一致性问题、如何应对缓存穿透/缓存雪崩问题、如何解决redis并发竞争key的问题
- Spring Cloud : Gateway Redis动态路由 (七)
- redis实现spring-redis-data的入门实例
- redis使用
- spring boot高性能实现二维码扫码登录(中)——Redis版
- spring data redis使用示例
- 面试题:应用中很多jar包,比如spring、mybatis、redis等等,各自用的日志系统各异,怎么用slf4j统一输出?(上)
- springboot 中spring-data-redis报错:远程主机强迫关闭了一个现有的连接,如何解决?
- Spring Boot2 redis