spring-redis 自带分布式锁实现

前言

以前还傻傻的自己写分布式锁实现:基于缓存或 zookeeper 的分布式锁实现。果然,你能想到的轮子,99% 都已经有人造好了,并且,比你自己造的好的多。

RedisLockRegistry

  1. 依赖
    implementation("org.springframework.boot:spring-boot-starter-data-redis")
    implementation("org.springframework.integration:spring-integration-redis")
  1. 配置
@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

  1. 使用
       val lock = lockRegistry.obtain("lock")
            if (lock.tryLock()) {
                try {
                   // 业务实现
                } finally {
                    lock.unlock()
                }
            }
posted @   JMCui  阅读(678)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示