现在的业务系统越来复杂,大型门户网站内容越来越多,数据库的数据量也越来愈大,所以有了“大数据”这一概念的出现。但是我们都知道当数据库的数据量和访问过于频繁都会影响系统整体性能体验,特别是并发量高的系统。为此,我们通过数据缓存来,减轻数据库的压力。为此,随着时间的步伐,各式各样的缓存技术的出现,让我们对于这些技术有些眼花缭乱。不是说功能最全的最先进,就是适合自己。我们要看看自己系统的定位去评估自己的系统适合使用哪种缓存机制。当然,也可以通过定义缓存接口,以后方便缓存机制的替换。下面我们来了解下缓存的概念、分类及发展趋势。

一、 概念
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 数据缓存(一)之介绍的更多相关文章

  1. [原创]关于mybatis中一级缓存和二级缓存的简单介绍

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  2. asp.net中缓存的使用介绍一

    asp.net中缓存的使用介绍一 介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的c ...

  3. Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析

    mongodb和memcached不是一个范畴内的东西.mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据.mongodb和memcached不存在谁替换谁的问题. 和 ...

  4. 【菜鸟学习jquery源码】数据缓存与data()

    前言 最近比较烦,深圳的工作还没着落,论文不想弄,烦.....今天看了下jquery的数据缓存的代码,参考着Aaron的源码分析,自己有点理解了,和大家分享下.以后也打算把自己的jquery的学习心得 ...

  5. jQuery1.9.1源码分析--数据缓存Data模块

    jQuery1.9.1源码分析--数据缓存Data模块 阅读目录 jQuery API中Data的基本使用方法介绍 jQuery.acceptData(elem)源码分析 jQuery.data(el ...

  6. cache应用(asp.net 2.0 SQL数据缓存依赖 [SqlCacheDependency ] )

    Asp.net 2.0 提供了一个新的数据缓存功能,就是利用sql server2005 的异步通知功能来实现缓存 1.首先在sqlserver2005 中创建一个test的数据库. 在SQL Ser ...

  7. SQL数据缓存依赖 [SqlServer | Cache | SqlCacheDependency ]

    前言 本文主要是对<ASP.NET 2.0开发指南>——<数据缓存>章节内容的提取并略有补充. 参考资料 1.     <ASP.NET 2.0开发指南> 2.   ...

  8. SQL SERVER 2000 & SQL SERVER 2005 数据缓存依赖

    一.SQL SERVER 7.0/2000和SQL SERVER 2005的简介及比较 1.1     SQL SERVER 7.0/2000 SQL SERVER 7.0/2000没有提供内置的支持 ...

  9. SpringMVC + ehcache( ehcache-spring-annotations)基于注解的服务器端数据缓存

    背景 声明,如果你不关心java缓存解决方案的全貌,只是急着解决问题,请略过背景部分. 在互联网应用中,由于并发量比传统的企业级应用会高出很多,所以处理大并发的问题就显得尤为重要.在硬件资源一定的情况 ...

随机推荐

  1. powerdesigner 导入SQL脚本生成模型

  2. git学习(6)多人协作

    git学习(6)多人协作 当我们从远程仓库克隆的时候,git会自动的把本地的master和远程的master对应起来,并且远程仓库的默认名称是origin 查看远程库的信息 $ git remote ...

  3. python的os模块命令

    https://www.cnblogs.com/weiyiming007/p/8493913.html

  4. 【opencv】cv::Mat转std::vector<cv::Point2d> (注意两容器中数据类型的一致性)

    获取cv::Mat大小: mymat.size() 获取cv::Mat指定位置的值:需指定数据类型,且注意数据类型应与存入时的数据类型一致,否则会导致不抛出异常的数据错误 mymat.at<,i ...

  5. 一行代码让python的运行速度提高100倍

    python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器Cpython运行效率太差. “一行代码让python的运行速度提高100倍”这绝不是哗众取宠的 ...

  6. Mysql大数据量分页优化

    假设有一个千万量级的表,取1到10条数据: select * from table limit 0,10; select * from table limit 1000,10; 这两条语句查询时间应该 ...

  7. java_基础——用代码编译.java文件+加载class文件

    [本文介绍] 本文不是深入理解和使用java编译器,只是在代码里编译.java文件的helloWorld.这种技术还是蛮有意思的,说不定在将来的某些只能化项目会运用到!^_^ [简单编译的流程] [j ...

  8. Pytorch permute,contiguous

    permute(dims),常用的维度转换方法 将tensor的维度换位      参数:dim(int)---换位顺序 >>>x = torch.randn(,,) >> ...

  9. Docker给运行中的容器添加映射端口

    方法一: 1.获得容器IP将container_name 换成实际环境中的容器名docker inspect `container_name` | grep IPAddress 2. iptables ...

  10. 在Windows控制台应用程序中使用CString

    CString是在windows平台下开发中经常使用的字符串类, CString已从MFC中剥离出来了,可以单独使用,只需引用atlstr.h头文件即可. include "stdafx.h ...