Skip to content

database-cache-simulation ​

1. 实验目标 ​

用纯 Java CLI 仿真移动端数据库与缓存机制(对应 docs/06-backend-data/02):

  • SQLite WAL 模式:写入追加进 -wal 日志,读直接读原库 → 读不阻塞写、写不阻塞读
  • 多级缓存分层:内存 → 磁盘(SQLite) → 远端(API),命中率优先内存
  • 对照:传统模式写锁整库 → 读写互斥、并发低

2. 工程要点 ​

  • write() 模拟 WAL 语义(顺序追加,无锁);read() 直接读原库
  • layeredGet 实现三级缓存:内存命中即返 → 磁盘命中提升内存 → 远端回源并双写
  • remoteHits 计数器量化"回源次数",直观展示分层缓存效果

3. 运行方式 ​

bash
cd labs/java/backend-data/database-cache-simulation
javac -d out src/DatabaseCacheSimulation.java
java -cp out DatabaseCacheSimulation

4. 预期现象 ​

  • WAL 写入不阻塞读(写进日志立即返回)
  • 5 次读同一 key → 远端回源次数 = 1(首次回源后内存/磁盘命中)

5. 常见误区 ​

误区实际情况
SQLite 性能差所以不用开 WAL + 事务后读写并发大幅提升,移动端本地数据首选
缓存只用内存就够了内存易失且有限;磁盘(SQLite)是持久层,远端是兜底,三级配合
写缓存比删缓存好移动端场景同样遵循 Cache-Aside:更新时失效缓存,读时回源重建

6. 对应知识库文档 ​

7. 完整源码 ​

站点构建时间:2026/8/24 23:43:17