第一章 缓存为王
分类
- 客户端缓存
- 网络缓存
- 服务端缓存
客户端缓存包括:
- 页面缓存
- 浏览器缓存
- APP缓存
网络缓存包括:
- web代理缓存
- 边缘缓存
服务端缓存包括:
- 数据库缓存
- 平台级缓存
- 应用级缓存
缓存算法:
- LRU:Least Recently Used,最近最少使用
- LFU:Least Frequently Used,
- LRU2:Least Recently Used 2,
- 2Q:Two Queues,
- SIZE:
- LRU-Threshold
- Log(Size)+LRU
- Hyper-G
- Pitkow/Recker
- Lowest-Latency-First
- Hybrid Hybrid
- Lowest Relative Value(LRV)
- Adaptive Replacement Cache(ARC)
- Most Recently Used(MRU)
- First in First out(FIFO)
- Random Cache
分布式系统理论
分布式系统是一门广且深的领域,缓存只是其中一个小模块。
分布式系统的术语:
进程和线程
并发和并行
锁
集群:
重试和幂等:失败不可避免,故而需要重试,重试就需要考虑幂等性问题。
硬件异常:服务器宕机、网络异常、磁盘故障、机房异常、
动手写缓存
JSR 107规范;
Store-By-Value:指在key/value存入缓存时,将其值拷贝一份存入缓存。避免在其他程序修改key或value的值时,污染缓存内存储的内容
Store-By-Reference:指在key/value存入缓存时,直接将其引用存入缓存
Ehcache & Guava Cache
Ehcache主要特点:
使用
架构图
Ehcache架构共分为四大部分
三种缓存过期策略:
- FIFO
- LFU
- LRU
Spring集成
Spring提供四个方法级缓存注解
- @Cacheable
- @CachePut
- @CacheEvict
- @CacheConfig
适用场景
Ehcache集群
支持五种集群方案分别是Terracotta、RMI、JMS、JGroup、Ehcache Server
Guava Cache
参考本地缓存及Guava Cache&Caffeine使用。