Blage's Coding Blage's Coding
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
  • Redis基础

    • 安装配置
    • 数据类型
    • Redis使用
    • Redisson分布式锁
      • 可重入锁
      • 读写锁
      • 闭锁
      • 信号量
    • Redis分布式缓存
  • 源码分析

  • 实战应用

  • 单机缓存

  • Redis
  • Redis基础
phan
2023-05-15
目录

Redisson分布式锁

# Redisson分布式锁

导入依赖,注入redissonClient对象,通过该对象来使用各种redis分布式锁。

# 可重入锁

场景:A方法调用B方法,A和B都要获取同一把锁。

lock()方法是阻塞式等待方法,获取不到会一直等待,直到获取到锁开始执行业务。不需要自旋锁重复自调用。

内置看门狗自动续上锁的TTL,防止业务执行时间过长;如果lock()自己指定过期时间则看门狗失效。

public void test(){
	RLock lock=redissonClient.getLock("my-lock");//名字相同就是同一把锁
    lock.lock();//加锁,并默认添加TTL
   // lock/lock(10,TimeUnit.SECONDS);
    try{
        //执行业务
    }catch(Exception e){
    }finally{
        lock.unlock();//释放锁
    }
}
1
2
3
4
5
6
7
8
9
10
11

# 读写锁

向redis中写数据之前添加写锁,在修改数据过程中它是一个排他锁,只能存在一个写锁;读数据之前添加读锁,它是一个共享锁,写锁没释放就必须等待。

# 闭锁

redissonClient.getCountDownLatch("door"),当分布式闭锁都调用countDown()达到设置次数后,主锁才执行await后业务。

# 信号量

只有当redis中的信号量value大于0,才能够获取信号量。

缓存数据和数据库一致性问题:数据库写后删缓存模式。实时性一致性要求高的数据就不应该读redis,直接查数据库。缓存只适合于最终一致性,给数据添加过期时间TTL,保证拿到当前最新数据即可。

编辑 (opens new window)
#Redis#高并发
上次更新: 2023/12/15, 15:49:57
Redis使用
Redis分布式缓存

← Redis使用 Redis分布式缓存→

Theme by Vdoing | Copyright © 2023-2024 blageCoder
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式