Files
KamaCache/README.md
2025-11-18 23:41:04 +08:00

55 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# KamaCache
> ⭐️ 本项目为[【代码随想录知识星球】](https://programmercarl.com/other/kstar.html) 教学项目
> ⭐️ 在 [缓存项目文档](https://www.programmercarl.com/other/project_huancun.html) 里详细讲解:**项目前置知识 + 项目细节 + 代码解读 + 项目难点 + 面试题与回答 + 简历写法 + 项目拓展**。 全面帮助你用这个项目求职面试!
## 项目介绍
本项目使用多个页面替换策略实现一个线程安全的缓存:
- LRU最近最久未使用
- LFU最近不经常使用
- ARC自适应替换
对于LRU和LFU策略我在其基础的缓存策略上进行了相应的优化例如
- LRU优化
- LRU分片对多线程下的高并发访问有性能上的优化
- LRU-k一定程度上防止热点数据被冷数据挤出容器而造成缓存污染等问题
- LFU优化
- LFU分片对多线程下的高并发访问有性能上的优化
- 引入最大平均访问频次:解决过去的热点数据最近一直没被访问,却仍占用缓存等问题
## 系统环境
```
Ubuntu 22.04 LTS
```
## 编译
创建一个build文件夹并进入
```
mkdir build && cd build
```
生成构建文件
```
cmake ..
```
构建项目
```
make
```
如果要清理生成的可执行文件
```
make clean
```
## 运行
```
./main
```
## 测试结果
不同缓存策略缓存命中率测试对比结果如下:
ps: 该测试代码只是尽可能地模拟真实的访问场景,但是跟真实的场景仍存在一定差距,测试结果仅供参考。)
![alt text](images/hitTest.jpg)