Redis 分布式锁终极版

本文介绍了如何使用Redis实现分布式锁,重点在于加锁和解锁的详细步骤。加锁通过`set()`方法,利用NX参数确保唯一性,设置过期时间以避免死锁。解锁时,通过Lua脚本判断请求ID与锁的value匹配才删除锁,确保安全。然而,集群部署时可能存在同步延迟导致多客户端获取锁的问题。
摘要由CSDN通过智能技术生成

先直接上代码

​
/**
 * 简单redis分布式实现 解决宕机死锁和解锁了别人的锁的问题
 * Created by ljb on 2017/12/26.
 */
@Service("simpleLockDistributeService")
public class SimpleLockDistributeService{

    private static final Logger logger = LoggerFactory.getLogger(SimpleLockDistributeService.class);

    private static final String LOCK_KEY_PREFIX = "lock.key:";//锁key的前缀

    private static final int EXPIRE_TIME_SECONDS_MIN = 3;//秒,设置单个锁对象的存活时间

    private static final int EXPIRE_TIME_SECONDS_MAX = 900;//秒,设置单个锁对象的存活时间

    private static final int WAIT_TRY_MAX_TIME_SECOND = 100;//秒,等待锁的最大时间

    private static final Long RELEASE_SUCCESS = 1L;

    private static final String LOCK_SUCCESS = "OK";
    private static final String SET_IF_NOT_EXIST = "NX";
    private static final String SET_WITH_EXPIRE_TIME = "EX";

    @Autowired
    private Jed
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值