Java面试-Redis篇(二)

分布式锁

抢劵场景

分布式锁使用

集群分布式锁使用

代码展示

setnx实现分布式锁

Redis实现分布式锁主要利用Redis的setnx命令。setnx是SET if not exists(如果不存在,则 SET)的简写。

redisson给锁续期

代码实现
public void redisLock() throws InterruptedException {
    //获取锁(重入锁),执行锁的名称
    RLock lock=redissonClient.getLock("testlock");
    //尝试获取锁,参数分别是:获取锁的最大等待时间(期间会重试),锁自动释放时间,时间单位
    //boolean isLock=lock.tryLock(10,30,TimeUnit.SECONDS);10为锁等待时间,30为锁失效时间
    boolean isLock = lock.tryLock(10, TimeUnit.SECONDS);
    //判断是否获取成功
    if(isLock){
        try {
            System.out.println("执行业务");
        } finally {
            //释放锁
            lock.unlock();
        }
    }
}

加锁、设置过期时间等操作都是基于lua脚本完成(回答此问题时提一嘴)

利用hash结构记录线程id和重入次数

redisson实现的分布式锁-主从一致性

RedLock(红锁):不能只在一个redis实例上创建锁,应该是在多个redis实例上创建锁(n/2+ 1),避免在一个redis实例上加锁。

面试话术

主从复制、主从同步

主从复制(主从集群)

全量同步

增量同步

面试话术

哨兵模式

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。

Redis集群脑裂

通过修改以下配置可以避免数据的丢失:

面试话术

分片集群

分片集群结构

面试话术

Redis其他面试问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值