本文示例源代码或素材下载
作为一个社区类型软件,大并发支持和高效稳定运行永远是“硬道理”,而有效安全的使用缓存恰恰能起到事倍功半的效果。而.NET本身所提供的缓存机制又显得过于“单薄”,比如说订制不太灵活方便, 缓存对象之间层次感不强, 使用时缺乏统一的管理等等。
Discuz!NT缓存产生背景:
在去年五月份我加入Discuz!NT项目组时,发现这个项目当时还未使用缓存机制。主要原因是项目还处于起步阶段,很多东西还只是有想法,但未付诸实施,或还没找到合适的方案, 而缓存就是其中一个到底该不该使用,如果使用的该到底能多大程度缓解数据库压力以及开发成本的东西。
我当时正好有一个比较好的“原型”(从一本书上看到的源码),也就是今天Discuz!NT所使用的缓存机制的雏形,但当时它在功能上还很不健全且存在一些“致命的” BUG, 但实现简单的缓存数据对象还是绰绰有余的,于是我通过一个简单的测试用例(缓存数据表和StringBuilder对象)和雪人一起讨论并分析后得到一些数据,基本上肯定了使用缓存解决对数据库象中经常访问但又不经常更新的数据进行缓存的使用方案,同时也要求这个缓存机制要使用起来尽可能的简单,同时功能扩展要非常方便。
因此本人就在这个“原型”的基本上进行了一段时间的功能扩展和BUG修正才得到今天大家所看到的这部分代码。
现在将Discuz!NT的缓存架构说明如下,先请大家看一下Discuz!NT架构图:
其实这个构架说白了就是一个标准的“策略”模式,为了对比方便,我把策略模式的结构
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!