分布式缓存
1、redis的线程模型
redis单线程、nio。异步的模型
文件时间处理器模型:
单线程模型效率高
1、纯内存操作【文件处理器部分】
2、非阻塞的io多路复用【io多路复用程序】
3、单线程反而避免了多线程的上下文切换的问题
Redis的过期策略:
1、定期删除、和惰性删除
定期删除:redis每100毫秒。对过期的key随机删除掉一部分
惰性删除:查询的时候。发现是过期key则去删除
内存过大的时候走内存淘汰机制:
1、noeviction:当内存不足以容纳新写入数据时、新写入操作会报错、这个一般没人用,
2、allkeys-lru:内存不足以容纳新写入数据时、在键空间中。移除最少使用的key
3、allkeys-random:内存不足、随机移除某个key。
4、volatile-lru:内存不足、移除最近最少使用的key{在过期的键空间中选择}
5、volatile-random :内存不足、随机移除使用的key{在过期的键空间中选择}
6、bolatile-ttl:当内存不足、在设置了过期时间的键空间中、移除更早时间的key
redis的高并发高可用
1、读写分离、master slave
master节点负责写、slave节点负责读
持续增加QPS就水平扩容、增加redis的slave就ok了
主从复制的基本流程
哨兵
数据丢失
防止:两个配置参数、如图、至少1个slave、数据复制和同步延迟不能超过10S,超过后、master不再接受任何请求。
异步复制如何降低损失
RDB AOF
RDB优点
RDB缺点
AOF优点
AOF缺点
如何选择
Redis Cluster redis集群
redis cluster的hash slot算法
基础通信原理
缓存雪崩
缓存穿透
双写一致性