美团面试:Redis锁如何续期?Redis锁超时,任务没完怎么办?

作者:微信小助手

发布时间:2024-09-12T22:20:11

本文目录

尼恩说在前面

Redis分布式锁过期怎么办?

两大Redis 分布式

 - 分布式锁一般有如下的特点:

基于Jedis 的API实现分布式锁

 - Redis几种架构

 - 首先看两个命令:

 - 基于Jedis API的分布式锁的总体流程:

 - 简单加锁:使用set的命令时,同时设置过期时间

 - 基于Jedis 的API实现简单解锁代码

基于Lua脚本实现分布式锁

 - lua脚本的好处

 - 基于纯Lua脚本的分布式锁的执行流程

 - 加锁的Lua脚本:lock.lua

 - 解锁的Lua脚本:unlock.lua:

 - 两个文件,放在资源文件夹下备用:

在Java中调用lua脚本,完成加锁操作

 - 在Java中调用lua脚本,完成加锁操作

 - 通过实现JUC的显示锁Lock接口,实现一个简单的分布式锁

 - 编写RedisLockService用于管理JedisLock

 - 测试用例

STW导致的锁过期问题

 - 锁过期问题 的解决方案

 - 方式一:模拟CAS乐观锁的方式,增加版本号

 - 方式二:watch dog自动延期机制

 - 为啥推荐使用Redission

Redisson简介

 - Redisson与Jedis的对比

 - Redission 的源码地址:

 - 特性 & 功能:

Redisson的使用

 - 如何安装 Redisson

 - 获取RedissonClient对象

 - SpringBoot整合Redisson

    -一、导入Maven依赖
    -二、核心配置文件
    -三、添加配置类
    -自定义starter

 - 使用 RLock 实现 Redis 分布式锁

Redision锁 核心源码分析

 - getLock()方法

 - tryLock方法

 - tryAcquire()方法

 - tryLockInnerAsync

 - 原理:加锁机制

 - Lua脚本的详解

 - 关于 lua脚本的参数解释:

 - 锁互斥机制

 - 可重入加锁机制

 - 释放锁机制

 - unlock 源码

 - unlockInnerAsync方法

 - 原理:Redision 解锁机制

 - 通过redis Channel 解锁订阅

watch dog自动延期机制

使用watchDog机制实现锁的续期