最近关注了一些缓存框架的特性和实现,包括 OSCache、JCS、Ehcache、Memcached 等等,公司的两个缓存框架,以及一个标准 JSR 107(JCache),发现一些诸多类同的方面。如果你不够熟悉以上,不妨先看看这两篇文章:《OSCache框架源码解析》和《Ehcache详细解读》,再看下面的内容也许会有更多想法。之后再思考,如果要自己去实现一套缓存框架,需要考虑哪些东西?
1、为哪些数据做缓存?
2、缓存框架的核心:
缓存生命周期管理,很多重要特性都是围绕它来展开的。
举例:
3、重要特性,这些特性不一定全部要具备,但是多数都要包含:
4、相对较次要的特性:
……
5、核心模型应该包括哪些?
——————————————————————————————————————————–
2012-6-10:
任何一个缓存框架,它要解决什么样的问题?
数据的访问、存取、计算太慢、太不稳定、太消耗资源,同时,这样的操作存在重复性。因此希望有这样一种中间媒介,放置在其间,只保存自己关心的数据,而不关心具体数据逻辑内容,对于重复性的操作给出响应。对于数据和服务的使用者,它是透明的。
从请求和数据流向的角度看,一个完整的缓存框架应该包括这样几个部分:
因此缓存框架的功能都是围绕数据展开的,它的核心就是缓存数据的整个生命周期。
但是其中每一项都可以拆分和解耦成许多部分,以缓存数据存储为例,可以拆分成:
……
但是看的到的不同实现越多,越发发现难以跳出这个思维惯性的圈子了。
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》