前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

前言

作者头像
JMCui
发布2023-03-02 18:24:17
2040
发布2023-03-02 18:24:17
举报
文章被收录于专栏:JMCuiJMCui

前言

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

RedisLockRegistry

  1. 依赖
代码语言:javascript
复制
    implementation("org.springframework.boot:spring-boot-starter-data-redis")
    implementation("org.springframework.integration:spring-integration-redis")
  1. 配置
代码语言:javascript
复制
@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. 使用
代码语言:javascript
复制
       val lock = lockRegistry.obtain("lock")
            if (lock.tryLock()) {
                try {
                   // 业务实现
                } finally {
                    lock.unlock()
                }
            }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • RedisLockRegistry
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档