redis分布式锁自动续约问题以及Redisson的使用

本文探讨了在分布式环境下使用分布式锁的重要性,指出命令局限性可能导致的问题,并介绍了Redisson作为解决这些问题的Java Redis客户端。Redisson通过自动续期的'看门狗'线程来避免锁过期,提供了丰富的分布式对象、集合、锁和同步器,以及服务等,简化了分布式锁的管理。文中还详细介绍了Redisson的配置、操作、对象和服务,包括连接配置、分布式锁的使用以及远程服务和实时对象服务等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

分布式锁设定过期时间不是一个好方案

Redisson使用指南

1. Overview

2. Maven Dependencies 

3. Configuration 

3.1. Java Configuration

3.2. File Configuration

4. Operation

5. Objects

5.1. Object Holder

5.2. AtomicLong

5.3. Topic

6. Collections

6.1. Map

6.2. Set

6.3. List

7. Locks and Synchronizers 

7.1. Lock

7.2. MultiLock

8. Services

8.1. Remote Service 

8.2. Live Object Service

9. Pipelining

10. Scripting

11. Low-Level Client 

12. Conclusion


为什么需要分布式锁?

在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式。但是现在公司都是流行分布式架构,在分布式环境下,如何保证不同节点的线程同步执行呢?

实际上,对于分布式场景,我们可以使用分布式锁,它是控制分布式系统之间互斥访问共享资源的一种方式。

比如说在一个分布式系统中,多台机器上部署了多个服务,当客户端一个用户发起一个数据插入请求时,如果没有分布式锁机制保证,那么那多台机器上的多个服务可能进行并发插入操作,导致数据重复插入,对于某些不允许有多余数据的业务来说,这就会造成问题。

set key value [EX seconds][PX milliseconds][NX|XX] 命令的局限

在Redis集群的时候也会出现问题,比如说A客户端在Redis的master节点上拿到了锁,但是这个加锁的key还没有同步到slave节点(可能是网络的原因),master故障,发生故障转移,一个slave节点升级为master节点&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MyySophia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值