• 分布式锁开发


    Redisson分布式锁

    搭建

    maven

    
    <dependency>
        <groupId>org.redissongroupId>
        <artifactId>redissonartifactId>
        <version>3.12.0version>
    dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    单实例模式搭建

    github地址

    https://github.com/redisson/redisson/wiki/2.-Configuration

    配置类,加入ioc容器

    // connects to 127.0.0.1:6379 by default
    RedissonClient redisson = Redisson.create();
    
    Config config = new Config();
    config.useSingleServer().setAddress("redis://myredisserver:6379");
    RedissonClient redisson = Redisson.create(config);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    分布式锁文档地址

    https://github.com/redisson/redisson/wiki/8.-%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E5%92%8C%E5%90%8C%E6%AD%A5%E5%99%A8

    可重入锁(Reentrant Lock)

    无需处理掉电或者程序问题导致锁失效问题

     RLock lock = redisson.getLock("anyLock");
    // 最常见的使用方法
    lock.lock();//阻塞式等待,默认30s释放,无需处理掉电或者程序问题导致锁失效问题
    // 加锁以后10秒钟自动解锁
    // 无需调用unlock方法手动解锁
    lock.lock(10, TimeUnit.SECONDS);
    
    // 尝试加锁,最多等待100秒,上锁以后10秒自动解锁
    boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS);
    if (res) {
       try {
         ...
       } finally {
           lock.unlock();
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    公平锁(Fair Lock)

    FIFO算法执行锁,依次排队等待锁

    联锁(MultiLock)

    红锁(RedLock)

    读写锁(ReadWriteLock)

    读业务用读锁,写业务用写锁,2者一起用。
    读读业务是共享锁
    其余业务都是排他锁(阻塞等待)

    信号量(Semaphore)

    可用业务比如服务限流

    可过期性信号量(PermitExpirableSemaphore)

    闭锁(CountDownLatch)

    springCache开发

  • 相关阅读:
    MySQL逻辑架构
    GitHub Pages 和 Jekyll 笔记
    对于复杂的网页布局,如多列布局和网格布局,CSS 有哪些最佳实践和技巧?
    在Vue中引入echarts以及使用
    【活着活着就老了-冯唐】阅后
    Vue3 企业级优雅实战 - 组件库框架 - 6 搭建example环境
    marquee标签的用法
    JDSU故障测试仪维修OTDR光时域反射仪维修MTS2000
    MySQL - Explain详解
    稀疏矩阵的三元组存储及快速转置
  • 原文地址:https://blog.csdn.net/weixin_45031570/article/details/126002868