关于缓存(上)
Han 通过 Google 阅读器发送给您的内容: 关于缓存(上) 于 13-4-24 通过 搜索技术博客-淘宝 作者:liaoran 缓存概述 商业世界中常说的一句话是"现金为王"。在技术世界里,与之相近的一个说法是"缓存为王"。 缓存在构建高性能web站点中有着举足轻重的作用, sql优化, 算法优化所带来的效果可能远远不如缓存带来的优化效果。但是缓存的使用并不是零成本的,首先的一个问题是,任何缓存的增加,都会带来两大问题: 数据不一致。 系统复杂度大幅度增加。 解决这两个问题需要以下一些方法,首先是去掉缓存。不要为了用缓存而用缓存,缓存不必要时,应该果断去掉,从而降低系统出错的可能性,降低系统复杂度。有些对数据实时性,准确性要求极高的系统,不能使用缓存。其次是分析需求,不同的业务会有不同的缓存策略,仔细分析变化与不变的数据,将不变的数据长时间缓存,变化的数据根据数据的业务意义和实时性要求动态调整缓存时间和存储方式。最后就是增加开发人员自身的能力,后面会详细提及各种问题的处理方法。 关于缓存的设计其实也脱离不了计算机基本的设计思想。数据结构与算法是计算机软件设计永恒的主题,算法的优劣需要考虑算法的时间和空间复杂度。多数优秀的算法都采用空间换时间的方式。涉及到缓存也不例外,缓存的设计需要考虑缓存的占用空间和命中率。我们当然希望缓存占用空间小,命中率高。命中率高是缓存设计的重要考察因素, 是提高系统性能的关键。占用空间越小,需要的成本越低。低成本,高效能的缓存设计是我们追求的目标。这没有固定的设计方法和公式,需要根据不同的业务灵活调整,但是,关于缓存在业务开发中的设计方法,有一些比较常用的思路与模式,借鉴这些模式,我们可以复用或创新,解决新的业务中所出现的问题,下面我就简单总结一些常用的缓存设计方法和应用场景,抛砖引玉,希望能对以后的开发有所帮助。 缓存不可变对象的复杂计算 第一个简单的缓存方式叫做缓存不可变对象的复...