本篇利用前面所学的所有知识,搭建一个erlang_otp项目的缓存应用,该应用支持键值对的存储和快速查询,支持自动淘汰老旧的数据项。多进程、监督者和数据表相互配合。该缓存实现基本的CRUD功能,完全驻留于内存。
整体设计
首先这个缓存系统的思想是存储键值对,其中键于键之间不重复(这个简单,ets/set就行),并且每个键对应一个值,该系统核心思想就是写入缓存的每一个值都分配一个独立的存储进程,再将对应的键映射至该进程。
系统涉及的模块
模块 | 用途 |
---|---|
simple_cache | 用户API |
sc_app | 应用行为模式实现模块 |
sc_sup | 根监督者实现模块 |
sc_store | 用于封装键和pid之间映射关系的模块 |
sc_element | 缓存数据存储进程 |
这里把内部的逻辑都封装在simple_cache中,用户调用对应函数只能通过simple_cache来调用,这个模块也直接与sc_element和sc_store通信,来获取数据,前