Redis 用 GET 再 SET 实现计数器为什么不可靠,INCR 解决了什么?
围绕“Redis 用 GET 再 SET 实现计数器为什么不可靠,INCR 解决了什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明读改写两步在并发下丢失更新、INCR 服务端原子完成。
Redis · 并发编程面试题第 1 页,显示第 1–10 题,共找到 10 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“Redis 用 GET 再 SET 实现计数器为什么不可靠,INCR 解决了什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明读改写两步在并发下丢失更新、INCR 服务端原子完成。
围绕“在线上 Redis 直接跑大集合的 SINTERSTORE 有什么风险,如何规避”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 O(N) 运算阻塞主线程,应限制集合规模或用从库/离线计算。
围绕“Redis 有序集合为什么用跳表而不是平衡树来实现排序”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确实现简单、范围查询高效、并发友好等原因。
围绕“Cache Aside(旁路缓存)模式的读写流程是什么,为什么是更新数据库后删缓存而不是先删缓存再更新”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出读 miss 回填、写时先写库再失效缓存的标准流程,以及先删缓存会被并发读回填旧值的问题。
围绕“Redis 缓存击穿(单个热点键过期被并发重建)有哪些防护手段,互斥锁与逻辑过期怎么选”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出热点键失效瞬间大量请求同时回源的现象,互斥重建保证一致性但阻塞、逻辑过期返回旧值异步刷新保证可用性的取舍。
围绕“缓存与数据库双写不一致时,延迟双删和订阅 binlog 失效缓存各自解决什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出延迟双删针对读写并发窗口的旧值回填、binlog 订阅把失效逻辑与业务解耦,不承诺强一致、不展开分布式事务。
围绕“Redis 分布式锁如何实现可重入与阻塞等待,为什么原生 SET NX 不具备这两种能力”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出可重入需哈希记录线程标识与计数、阻塞等待可用订阅或自旋。
围绕“Redis 分布式锁的超时时间如何设定,业务执行时间超过锁 TTL 会发生什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 TTL 过短导致锁提前释放引发并发冲突、过长导致故障恢复慢的权衡,以及看门狗续期思路。
围绕“在集群或多副本 Redis 上做分布式限流,为什么计数必须落在同一个键上,读改写并发下如何保证准确”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出限流状态需单键存储以利用单节点原子性、集群下同一会话哈希到同槽,以及 Lua 或 INCR 避免并发读改写丢失。
围绕“Redis RDB 持久化的触发方式有哪些,bgsave fork 子进程时写时复制带来什么风险”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 save 配置触发与手动 SAVE/BGSAVE 的区别,以及 fork 期间 COW 导致内存翻倍的隐患。