Redis 热点缓存过期后数据库被打满:互斥重建与逻辑过期实践
适用场景 商品详情、活动配置、首页聚合数据和权限策略等读取接口,通常会把查询结果缓存在 Redis 中。平时数据库负载很低,一旦某个热点键过期,大量并发请求却可能同时回源,几百毫秒内把连接池占满,最终形成接口超时、重试放大和数据库雪崩。 本文讨论的是单个或少量热点键失效导致的缓存击穿。如果大量键在同一时间过期,属于缓存
Tag
包含这个标签的文章。
适用场景 商品详情、活动配置、首页聚合数据和权限策略等读取接口,通常会把查询结果缓存在 Redis 中。平时数据库负载很低,一旦某个热点键过期,大量并发请求却可能同时回源,几百毫秒内把连接池占满,最终形成接口超时、重试放大和数据库雪崩。 本文讨论的是单个或少量热点键失效导致的缓存击穿。如果大量键在同一时间过期,属于缓存
适用场景 本文适用于使用 Redis Stream 消费组承载异步任务、事件通知或轻量消息队列的系统。典型架构是生产者通过 XADD 写入 Stream,多个消费者用 XREADGROUP 拉取消息,业务成功后再执行 XACK。 当某个消费者在处理期间崩溃、被强制重启或网络中断时,已经投递但尚未确认的消息不会重新出现在
适用场景 业务使用 Redis 承载登录态、商品详情、计数器或排行榜。平时接口稳定,但在促销、定时任务或某些请求集中到来时,应用开始出现 Redis 超时;监控中 instantaneous_ops_per_sec 并不一定很高,CPU 也可能没有持续满载。 本文以单实例或主从架构为例,说明如何区分 Hot Key(极
适用场景 Redis 采用主从复制,业务高峰时偶发写入延迟、主库 CPU 或网络突刺。日志中反复出现 Full resync requested、Partial resynchronization not accepted,从库短时间内加载 RDB,甚至与主库断开后很久才恢复。 本文适用于 Redis 6/7 的单主多
适用场景 本文适用于线上 Redis 开启 AOF 持久化后,业务在某些时间段出现接口变慢、写入超时、Redis used_cpu_sys 升高、磁盘 await 或 util 接近打满的场景。常见部署形态包括单机 Redis、主从 Redis、哨兵架构,以及运行在云主机本地盘或云盘上的 Redis 实例。 重点关注下
适用场景 这篇文章适用于线上 Redis 作为缓存、会话、计数器或排行榜组件时,出现接口响应时间突然升高、Redis CPU 飙升、慢查询增多、网络出口流量变大等问题的排查。 典型环境包括: 单机 Redis 或 Redis Sentinel 架构; Redis Cluster 分片集群; 业务使用 Python、Ja
分布式锁应该具备的条件: 在分布式系统环境下,任意时刻,只能有一个客户端能持有锁; 高可用/高性能的获取锁和释放锁,必须保证加锁和解锁是同一个客户端所为; 具备锁失效机制(防止死锁),即使有一个客户端在持有锁期间崩溃而没有主动释放锁,也能保证后续其他客户端能正常加锁; 具备非堵塞特性,即没有获取到锁,直接返回获取锁失败
安装Redis 下载地址:http://redis.io/download 下载最新文档版本。 本教程使用的最新文档版本为 redis-4.0.9,下载并安装: yum install -y gcc g++ gcc-c++ make yum groupinstall 'Development Tools' cd /us
Redis简介 Redis是完全开源免费的,准守BSD协议,是一个高性能的key-value数据库 Redis与其他key-value缓存产品有以下三个特点: Redis支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用 Redis不仅支持简单的key-value类型的数据,同时还提供list,