分布式锁
当前时刻,key只能被一个实例操作
set key value 过期时间 NX(没有才能进行设置,有了,就乖乖等别人用完吧)
循环 + 超时风险;zk锁 监听+通知,无超时风险
keys与scan
停顿;需去重 + key会不一致
异步队列
lpush + lpop + 主题/订阅;无连接造成消息丢失
延时队列
sortedSet结构:消息key-时间score
持久化
全量RDB(5分钟1次、快照、fork子进程) + 增量AOF(1秒1次、append-only)
断电影响
sync磁盘丢数据
集群同步机制
(主)bgsave镜像(全量RDB) + (主)内存(增量AOF) + 文件传输(主从) + (从)内存写入
集群高可用
哨兵(高可用)、cluster(高可用+扩展性)
缓存雪崩
DB被打崩了;然后发生链式爆炸
热点key(随机过期时间+永不过期)、一个服务节点存一部分热点数据、ehcache+Hystrix、持久化(灾备恢复)
缓存穿透
不正常的请求和恶意攻击;
400防线(参数校验)、nginx的ip限流、布隆过滤器(只放走正常的请求)
哨兵集群
redis服务器挂了,本来要人工处理的流程,给自动化了。
集群监控(大家是不是都没挂啊)、消息通知(管理员,有人挂了)、故障转移(领导挂了,你来当领导吧)、配置通知(老领导挂了,这位是新领导,得记住了)
内存淘汰机制
惰性删除(你什么时候查,我什么时候删)与定期删除(随机挑一些给删了)
经典的同步读写(旁路缓存模式)
读缓存 没查到、查DB+更新缓存;
写缓存 更新DB + 删除缓存