标签频道
Redis
该标签下的文章、提问与讨论帖。
【背景】 我们用 Redis 6.2(3 主 3 从 + Sentinel)承载会话与限流计数,Java 8 + Spring Boot 2.7,客户端是 Jedis 3.8(自封装,基于 JedisPool,maxTotal=200、ma
【背景】 Kafka 2.8(3 broker,min.insync=2)承载订单事件 topic "order-events",6 分区,消费组 3 实例(每实例 2 分区)。下游是 MySQL 8.0 写订单表 + Redis 6.2
«结论先行:MOVED、ASK、TRYAGAIN 不是同一种「重定向」,客户端对三者的处理策略完全不同。绝大多数「扩容期间 p99 抖了半小时」的事故,根因都不在 Redis 服务端,而在客户端把 ASK 当成 MOVED 处理、或者拓扑刷
«结论先行:「先更新 DB 再删缓存」不是错,错的是把删除当成一次性的、同步的、必定成功的事件。缓存一致性事故 90% 不是「顺序写反了」,而是「删缓存这一步本身会失败、会乱序、会被旧读回填」。下面用一次真实的改价事故,把机制、正确顺序、以
【背景】 我在做一套对外 API 的安全加固,网关是 4 个副本(Go + 自研,跑在 3 节点 K8s 1.28,无云)。鉴权用「签名 + 时间戳 + nonce」三件套:客户端带 "ts"、"nonce"、"sign=HMAC(secr
结论先行 线上 Redis 连接被「莫名其妙断开」、客户端侧只看到 "Connection reset by peer" / "Connection closed",第一嫌疑往往不是网络抖动、不是超时,而是 Redis 服务端主动 kill
一、现象:一个支付回调接口,3 小时被重放 47 次,多入账 47 笔 上个月给一家做跨境支付的客户做安全加固复盘。他们有一笔对回调接口 "/v1/pay/callback" 的投诉:某商家在 3 小时内重复收到了同一笔订单的 47 次成功
【背景】 我们用 Kafka 3.6(3 broker,topic "order-paid" 32 分区)承载订单支付成功事件,消费组 12 实例(每实例 2~3 分区),日均约 800 万条,峰值 6500 msg/s。消费逻辑如下: 1
«结论先行:"SET key val NX" 拿到锁这件事,本身不携带任何持久性保证。在 Redis Sentinel / 主从架构里,锁是写在单机主库上的一条普通 key,靠异步复制传给从库——主库在复制确认前宕机,这条锁就会从整个集群里
结论先行:热 key 的根因不是「Redis 慢」,而是集群分片均衡被单 key 击穿——所有读都落在同一个分片上,其余 7 个分片在空转。解法不是加机器、不是调 Redis,而是把 90% 的读拦在应用进程内(本地缓存),用一致性令牌控制
【背景】 我们一个业务方在 Redis 6.2 集群(4 主 4 从,集群模式)里同时跑了 3 个微服务:订单(order)、库存(stock)、风控(risk),共用一个集群省钱。最近做安全加固,目标是给每个服务一个独立 ACL 账号,做
【背景】 我负责一个库存扣减服务:JDK 17 + Spring Boot 3 + Redis 7(Cluster)+ Lua 脚本,核心链路是用 Redis 分布式锁保证「读库存→判断→扣减→回写」的原子性。锁是自己实现的 Redlock
一、背景:重复消息不可怕,可怕的是「去重表」先把自己撑爆 去年我们重构订单回调链路:Kafka 3.5(3 节点,"order-callback" topic 16 分区)→ 消费组 8 实例 → MySQL 8.0 落库。日均消息量约 3
一、现象与背景 先给结论:这次毛刺的根因不是代码、不是网络、不是 Redis 集群配置,而是一个业务同事顺手写的"全量拉取榜单"接口——它背后是一个 48MB 的 ZSet 大 Key。 具体场景:我们是做直播打赏榜单的,Redis Clu
一、现象:一次秒杀活动,100 件库存卖出了 137 件 上个月我们上一场限时秒杀,目标是把某个 SKU 的 100 件库存放出去。活动开始后的 90 秒内,订单系统实际落库了 137 单,多扣了 37 件——这在库存层面意味着超卖 37%