周末做一个缓存系统!

文摘   2024-12-28 11:41   广东  

最近很多录友在问:有没有比较小,但又比较完整的项目。

最近知识星球里里刚刚发布了 C++版本缓存系统,这个小项目。

代码量不大,只有1100行。

一般的话,每天花 6-8个小时,7天就可以学完。

做这个项目的基础要求:

熟悉C++语法,学会C++11常用特性即可,了解操作系统相关知识,有网络编程经验更佳。

这个项目对于时间紧张的录友比较合适。

该项目满足一下特点

  • 代码量不大
  • 整体不难
  • 又有项目难点可说的
  • 可以较快学完

该缓存系统使用多个页面替换策略实现了一个线程安全的缓存系统

  • LRU:最近最久未使用页面置换算法
  • LFU:最不经常使用页面置换算法
  • ARC:自适应替换缓存算法

什么是缓存?

缓存是将高频访问的数据暂存到内存中,是加速数据访问的存储,降低延迟,提高吞吐率的利器。

为什么要实现缓存系统?

因缓存的使用相关需求,通过牺牲一部分服务器内存,减少对磁盘或者数据库资源进行直接读写,可换取更快响应速度

尤其是处理高并发的场景,负责存储经常访问的数据,通过设计合理的缓存机制提高资源的访问效率。

由于服务器的内存是有限的,我们不能把所有数据都存放在内存中,因此需要一种机制来决定当使用内存超过一定标准时,应该删除哪些数据,这就涉及到缓存淘汰策略的选择。

实际应用场景

缓存策略在系统和实际业务开发过程中较为常见,下面我为大家列出一些使用了缓存策略的知名系统和组件:

Linux Kernel:使用 LRU 在内存管理中页面缓存(Page Cache),当物理内存不足时,系统会优先淘汰最近未使用的页面。

Android内存缓存: Android的LRUCache类用于管理有限内存中的应用数据缓存。

Redis:Redis 本身并不直接实现 LRU 缓存策略,但它提供了过期和淘汰机制。

在内存不足时,Redis 可以配置不同的淘汰策略,如 volatile-lru(对于设置了过期时间的键,使用 LRU 策略淘汰数据)。

Redis 提供了 LFU 策略(从 4.0 版本开始)作为其内存驱逐策略之一,可以通过 maxmemory-policy 配置。

PostgreSQL :在一些PostgreSQL的缓存拓展中实现了基于ARC的缓存机制

缓存系统项目精讲

代码直接开源,Github项目地址:https://github.com/youngyangyang04/KamaCache

欢迎star,收藏

该项目文档是知识星球录友专享的。

项目文档依然是将 「简历写法」给大家列出来了,大家学完就可以参考这个来写简历,分别给出普通写法和进阶写法:

做完该项目,面试中大概率会有哪些面试问题以及如何回答,也列出好了,共27道。

文档中的项目面试题都掌握的话,这个项目在面试中基本没问题

当然项目文档会对本项目代码做详细的讲解:

同时会对三个缓存策略做优劣对对比:

同时对缓存命中率做实验效果对比:

获取本项目专栏

本文档仅为星球内部专享,大家可以加入知识星球里获取,在星球置顶一:

加入后可以获取全部项目文档和八股资料 包含:7个CPP项目、2个Java项目、两个前端、一个Go项目、最强八股文第五版、面试突击八股文。

这里给出十元代金券,加入星球如果发现不满意,支持3天(72h)内全额退款。

加入星球后,可以加如下微信,发动星球支付截图,拉你到星球交流群: 


代码随想录
认准代码随想录,学习算法不迷路。 刷题网站:programmercarl.com
 最新文章