知识卡片
缓存并发要加边界
内容
缓存算法本身可能并发不安全,高并发服务需要在读写路径上加锁或设计无锁结构。发散:本地缓存不是局部变量,一旦被多个请求共享,它就是并发组件。
参考来源
- 位置:《Go语言入门到实战(共3册)》第5章《Go语言编程之旅:第5章 进程内缓存》(源文件:_epub-src/text/part0010_split_000.html)
- 结论依据:原文围绕“它们都是并发不安全的”给出定义、机制、流程、对比或限制条件,本卡片据此提炼可迁移的语言/工程结论,并补充了边界或实践启发。
- 原始内容:必掌握该算法。groupcache库使用的就是LRU算法。 未知 5.3 进程内缓存 前面讲解了常用的缓存算法和实现,但它们都是并发不安全的。本节我们基于前面的缓存淘汰算法,创建一个并发安全的进程内缓存库。 5.3.1 支持并发读写 我们通过 sync.RWMutex 来封装读写方法,使缓存支持并发……