Redis 核心知识点(持续更新中)
Redis单线程IO多路复用原理
参考文章:Redis 网络IO模型简介
Redis缓存穿透、缓存雪崩、缓存击穿问题
1、参考视屏【P17-P20】:https://www.bilibili.com/video/BV1TV411K7rz?p=17
2、参考文章:Redis缓存穿透、缓存击穿和缓存雪崩(包含解决方案)
Redis与数据库双写不一致问题
1、参考视屏【P21-P24】:https://www.bilibili.com/video/BV1TV411K7rz?p=21
2、参考文章:Redis的缓存与数据库双写不一致问题
基于Redis实现分布式锁的的应用场景
参考视屏【P21-P33】:https://www.bilibili.com/video/BV1TV411K7rz?p=21
Redis持久化方式
Redis内存淘汰机制
volatile监测的是设置过期时间的数据,allkeys监测的是所有数据(详细参考Redis的内存淘汰机制):
1、volatile-lru(least recently used):从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
2、volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
3、volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
4、allkeys-lru(least recently used):当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key(这个是最常用的)
5、allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
6、no-eviction:禁止驱逐数据,也就是说当内存不足以容纳新写入数据时,新写入操作会报错。这个应该没人使用吧!
【4.0 版本后增加以下两种】
:
7、volatile-lfu(least frequently used):从已设置过期时间的数据集(server.db[i].expires)中挑选最不经常使用的数据淘汰
8、allkeys-lfu(least frequently used):当内存不足以容纳新写入数据时,在键空间中,移除最不经常使用的key
Redis删除策略
参考文章:Redis 删除策略的三种实现:定时删除、定期删除、惰性删除。
Redis主从复制、哨兵、集群
参考文章:Redis集群的三种方式详解(附优缺点及原理区别)
Redis集群分片规则与一致性Hash
1、Redis集群分片规则:利用一致性hash实现hash分槽。
2、Redis集群一致性Hash算法
基于Redis与Redisson的锁续命
Redis 锁续命
@Slf4j
class LockLeaseRenewal {
private final RedisTemplate redisTemplate;
private final String lockKey;
private final Duration renewalInterval;
private Timer timer;
public LockLeaseRenewal(RedisTemplate redisTemplate, String lockKey, Duration renewalInterval) {
this.redisTemplate = redisTemplate;
this.lockKey = lockKey;
this.renewalInterval = renewalInterval;
this.timer = new Timer();
}
//线程开始执行续命
public void startRenewal() {
if (redisTemplate.hasKey(lockKey)) {
TimerTask task = new TimerTask() {
@Override
public void run() {
redisTemplate.expire(lockKey, renewalInterval); // 续命
log.info("锁续命: " + lockKey);
}
};
timer.schedule(task, 0, renewalInterval.toMillis() / 2); // 定期续命
}
}
//停止锁续命
public void stopRenewal() {
timer.cancel();
timer.purge();
}
}
Redisson锁续命
参考文章:https://blog.csdn.net/weixin_51146329/article/details/129612350