博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蜗牛历险记(二) Web框架(下)
阅读量:4879 次
发布时间:2019-06-11

本文共 1147 字,大约阅读时间需要 3 分钟。

    Web框架第三篇--缓存篇

    缓存的优劣很大程度上决定了框架的效率,一个有节操的缓存它应该是高效的,利用率高的,具备更多扩展功能的。


    一、介绍之前

    计算机各个硬件的运行效率是不一样的,CPU>>一级缓存>>二级缓存>>内存>>硬盘。如何提供CPU、一级缓存、二级缓存的使用率是操作系统的课题。我们需要做的就是如何提高内存使用效率,减少磁盘IO。

    目前我们熟知的跟缓存有关的产品:.Net Mvc的CacheManager,Redis,Memcached

    二、使用范围

    缓存的作用就是将频繁需要的数据从原先存储效率相对低的磁盘存放到存储效率高的内存中,由于磁盘相对廉价而内存相对昂贵,我们对存放进入内存的数据也应该是有取舍的。按我个人理解来说,我觉得符合以下规则的可以考虑放入缓存中:

        1.数据使用频繁的

        2.改变较少,查询较多的

        3.数据量总体不是很大的

    总体而言,缓存不应该多度占用系统正常运行所需资源,尽量提高缓存命中率,降低缓存高频更改。

    三、初始化

    同样的,为了解耦与具体缓存框架的关系,我们需要自己订立一套标准的缓存接口

public interface IMemoryCacheManager {        ///         /// 从缓存块获取缓存项        ///         /// 
关联缓存的类型        /// 
存储的缓存项类型        /// 
与缓存项关联的键值        /// 
获取配置        /// 
        TResult Get
(TKey key, Func
, TResult> acquire);        /// 
        /// 获取缓存块        ///         /// 
关联缓存的类型        /// 
存储的缓存项类型        /// 
        ICache
 GetCache
();    }

 

    acquire的委托就是当缓存中不存在key时,通过执行acquire,将结果存入缓存,同时可以在AcquireContext<TKey>入参中设置缓存失效参数(比如失效时间、失效触发文本等会)。

    目前基于这个接口,我实现了纯内存式的缓存接口和基于Redis缓存的缓存接口。

    四、总结

    Web框架的总结基本结束了。之后可能会针对某一个技术进行重点详细地分析。目前计划下一步介绍具体业务应用的设计和实现。

 

 

转载于:https://www.cnblogs.com/leafly/p/5137904.html

你可能感兴趣的文章
223. Rectangle Area
查看>>
spring boot + velocity中文乱码解决方式
查看>>
世锦赛7金MVP德雷塞尔真能接班菲鱼?同期成就不及1/5!
查看>>
读罢泪两行,人生成长必须面对的10个残酷事实
查看>>
ASP 32位程序运行与64位问题:ADODB.Connection 错误 '800a0ea9' 未指定提供程序,也没有指派的默认提供程序。...
查看>>
xcode-git笔记
查看>>
TCP和UDP的优缺点及区别
查看>>
MATLAB消除曲线毛刺Outlier Detection and Removal [hampel]
查看>>
JavaScript 正则表达式
查看>>
MySQL数据库安装和基本使用
查看>>
CSocket客户端(TCP)
查看>>
Unity Navigation自动寻路
查看>>
MySQL DATE_SUB() 函数
查看>>
在SSH框架下按条件分页查询
查看>>
jquery选择器
查看>>
常见MIME类型
查看>>
luoguP2742 二维凸包 / 圈奶牛Fencing the Cows
查看>>
hdu3721: Building Roads(求树的中心,直径)
查看>>
实训作业2
查看>>
【javascript学习——《javascript高级程序设计》笔记】DOM操作
查看>>