从零实现系列|分布式缓存

0.序言

为什么需要 cache

cache 需要干什么

1.缓存淘汰策略

完整代码

1
2
3
4
5
version_1_LRU[geecache]
├── go.mod
└── lru
├── lru.go
└── lru_test.go

2.单机并发缓存

完整代码

1
2
3
4
5
6
7
8
9
10
version_2_singal_node[geecache]
├── geecache
│ ├── byteview.go # 缓存值的抽象与封装
│ ├── cache.go # 并发控制
│ ├── geecache.go # 负责与用户交互,并拥有从外部数据源获取缓存并存储的功能
│ ├── geecache_test.go
│ └── lru # 未更改,与上一节一致。缓存淘汰策略
│ ├── lru.go
│ └── lru_test.go
└── go.mod

3.HTTP 服务器

完整代码

1
2
3
4
5
6
7
8
9
10
11
version_3_http_server[geecache]
├── geecache
│ ├── byteview.go # 未更改,与上一节一致。缓存值的抽象与封装
│ ├── cache.go # 未更改,与上一节一致。并发控制
│ ├── geecache.go # 未更改,与上一节一致。负责与用户交互,并拥有从外部数据源获取缓存并存储的功能
│ ├── geecache_test.go # 新增 http 测试
│   ├── http.go # 新增从 HTTP 服务器获取 cache
│ └── lru # 未更改,与上一节一致。缓存淘汰策略
│ ├── lru.go
│ └── lru_test.go
└── go.mod

4.一致性哈希

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
version_4_consistent_hashing[geecache]
├── geecache
│ ├── byteview.go # 未更改,与上一节一致。缓存值的抽象与封装
│ ├── cache.go # 未更改,与上一节一致。并发控制
│   ├── consistenthash
│   │   └── consistent_hash.go # 新增一致性哈希
│ ├── geecache.go # 未更改,与上一节一致。负责与用户交互,并拥有从外部数据源获取缓存并存储的功能
│   ├── geecache_test.go
│   ├── http.go # 未更改,与上一节一致。HTTP 服务
│   └── lru
│   ├── lru.go
│   └── lru_test.go
└── go.mod

从零实现系列|分布式缓存
https://www.aimtao.net/7days-cache/
Posted on
2023-05-13
Licensed under