基于Redis的分布式锁实现(秒杀优惠券的优化)

目录

什么是分布式锁​

基于Redis的分布式锁(非阻塞实现)

当业务阻塞时出现的并发问题(误删Redis分布式锁)

总结


前文链接:

(1条消息) Redis——实现优惠券秒杀_486过于烦躁的博客-优快云博客

什么是分布式锁

修改秒杀优惠券的流程

分布式锁的实现


基于Redis的分布式锁(非阻塞实现)

 

 ILock接口

public interface ILock {
    /**
     * 尝试获取锁
     * @param timeoutSec 锁持有的过期时间,过期后自动释放
     * @return true代表获取锁成功,false代表获取锁失败
     */
    boolean trLock(long timeoutSec);

    /**
     * 释放锁
     */
    void unlock();
}

创建一个类并实现ILock接口,用自定义的name值来区分锁,同时获取当前线程的Id作为value值存入进redis中,并设置超时时间

public class SimpleRedisLock implements ILock {

    private static final String KEY_PREFIX="lock:";

    private String name;

    private StringRedisTemplate stringRedisTemplate;

    public SimpleRedisLock(String name, StringRedisTemplate stringRedisTemplate) {
        this.name = name;
        this.stringRedisTemplate = stringRedisTemplate;
    }

    @Override
    public boolea
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值