现在的业务系统越来复杂,大型门户网站内容越来越多,数据库的数据量也越来愈大,所以有了“大数据”这一概念的出现。但是我们都知道当数据库的数据量和访问过于频繁都会影响系统整体性能体验,特别是并发量高的系统。为此,我们通过数据缓存来,减轻数据库的压力。为此,随着时间的步伐,各式各样的缓存技术的出现,让我们对于这些技术有些眼花缭乱。不是说功能最全的最先进,就是适合自己。我们要看看自己系统的定位去评估自己的系统适合使用哪种缓存机制。当然,也可以通过定义缓存接口,以后方便缓存机制的替换。下面我们来了解下缓存的概念、分类及发展趋势。
一、 概念
a、定义
数据缓存就是将数据暂存于内存缓存区中的一种技术。
b、目的
通常情况下,大量数据是保存在数据库中的,而应用程序访问数据库是一项很费时的操作。如果先将数据库中的数据缓存到缓存区中,当应用程序需要这些数据时,直接从缓存区中提取,就可以减少系统开销。
c、 类别
本地缓存 > 集群缓存 > 分布式缓存(数据网格)
参考:http://in.relation.to/2012/11/08/data-grid-why/
二、 缓存类别的对比
缓存类别 | 本地缓存 | 集群缓存 | 分布式缓存 |
---|
存储位置 | 应用服务器内存 | 网络服务器内存 | 网络服务器内存 |
---|
优点 | 访问非常快 | 每一台服务器都包括所有的缓存 | 数据缓存分布,当缓存增移更,只需要对单台服务器操作 |
---|
缺点 | 内存有限,不易扩展 | 对缓存增移更操作,需要对所有服务器访问 | 当一某台服务器(服务器集群)宕机或者网络异常无法访问时,则该服务器的缓存也无法访问了。 |
---|
适合系统级别 | 并发量小(<10),数据量不大(单表数据<10万)。 | 业务单一,并发量大,数据量大(千人用户,并发量在200左右)。 | 业务量复杂,并发量巨大。 |
---|
三、 分布式缓存框架对比
名称 | Couchbase | Memcached | Redis |
---|
描述 | 基于CouchDB使用了JSON作为其文档格式,并兼容Memcached的接口 | 在内存中实现键值对存储方式,最初设计即是实现缓存 | 在内存中实现键值对存储方式,用于数据库、缓存和消息代理(因为Redis非常注重性能,所以大部分设计要求高性能和低延迟) |
---|
数据模型 | 文档数据(键值对) | 键值对 | 键值对(多个数据类型和一组丰富的操作,以及可配置的数据过期、驱逐和持久性) |
---|
官方网站 | www.couchbase.com | www.memcached.org | redis.io |
---|
首次发行 | 2011 | 2003 | 2009 |
---|
现行版本 | 3.0.3, 2015年3月 | 1.4.24, 2015年4月 | 3.0.3, 2015年6月 |
---|
许可协议 | 开源(Apache version 2) | 开源(BSD license) | 开源(BSD 3-Clause, commercial license available) |
---|
趋势图 | 参考:db-engines.com/en/
|
---|
总结:缓存的发展,其实是前一种类型进化的产物,所以可以兼容前一种类型。哪一种方案最优,最易,要看架构设计要求了。不需要简单的事情复杂化。但是为了讲解缓存,我只会讲解Redis。因为他是目前使用率最高的分布式缓存。后面我会讲一讲如何使用Redis。
原标题:.net 数据缓存(一)之介绍
关键词:.NET