memached分布式内存缓存服务器

一:memached简介

在许多高并发的应用中,把业务数据保持久化 ( 保存到数据库,磁盘文件或其它 ) 后,应用从持久化设备中读取数据并在浏览器中显示,随用户量,数据量增大,访问的集中,会出现持久化设备负担过重(典型的就是数据库),影响应用响应速度,应用延迟严重等重大问题。典型的应用就是 WEB 应用中的高并发网站。

这时候应用就需要一种缓存机制来提高并发读取速度的性能 , memcached 能在大中型系统中提供优秀的缓存服务。 memcached 是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web 应用的速度、提高可扩展性。

memcached 是以 LiveJournal 旗下 Danga Interactive 公司的 Brad Fitzpatric 为首开发的一款软件。现在已成为 mixi 、 hatena 、 Facebook 、 Vox 、 LiveJournal 等众多服务中提高 Web 应用扩展性的重要因素。

二:memached产生的背景

对于大数据、高并发、高访问的Web应用程序来说,数据库存取瓶颈一直是个令人头疼的问题。当一个数据池连接数峰值已经达到500的时候,那运行的程序离崩溃的边缘也不远了。很多小网站的开发人员一开始都将注意力放在了产品需求设计上,缺忽视了程序整体性能,可扩展性等方面的考虑,结果眼看着访问量一天天往上走,可突然发现有一天网站因为访问量过大而崩溃了,后果是非常严重的。

大家都知道,当有一个request过来后,web服务器交给app服务器,app处理并从db中存取相关数据,但db存取的花费是相当高昂的。特别是每次都取相同的数据,等于是让数据库每次都在做高耗费的无用功,数据库如果会说话,肯定会发牢骚,你都问了这么多遍了,难道还记不住吗?是啊,如果app拿到第一次数据并存到内存里,下次读取时直接从内存里读取,而不用麻烦数据库,这样不就给数据库减负了?而且从内存取数据必然要比从数据库媒介取快很多倍,反而提升了应用程序的性能。

因此,我们可以在web/app层与db层之间加一层cache层,主要目的:

1. 减少数据库读取负担;

2. 提高数据读取速度。而且,cache存取的媒介是内存,而一台服务器的内存容量一般都是有限制的,不像硬盘容量可以做到TB级别。所以,可以考虑采用分布式的cache层,这样更易于破除内存容量的限制,同时又增加了灵活性。

三:Memcached的工作原理

Memcached处理的原子是每一个(key,value)对(以下简称kv对),key会通过一个hash算法转化成hash-key,便于查找、对比以及做到尽可能的散列。同时,memcached用的是一个二级散列,通过一张大hash表来维护。

四:memcached 主要特点

开源

memcached服务器是一个很大的哈希表

显著减少数据库负载。

非常适合高负载的数据库网站。

从技术上来说,它是在通过TCP或UDP在服务器和客户端之间来访问。

五:Memcache各类数据操作原理

1,查询数据(select),首先通过指定的Key查询 (get)Memcache中间缓存层数据,如果存在相对应数据,则直接获取出数据结果,查询过程完全不需要查询数据库。如果不存在,则查询MySQL数 据库,并以key对应value的形式将查询结果存储在Memcache缓存数据中,然后将结果返回给查询语句。

2,更新 数据(update),首先更新数据,然后删除相关的memcache数据(delete)。

3,增加 数据(add),首先删除相关缓存数据,然后增加数据。

4,删除数据(delete), 删除数据,并删除Memcache数据。

六:不要使用memcached来做什么

持久性数据存储

数据库

特殊应用

大对象缓存

容错或高可用性

时间: 2024-10-11 00:15:32

memached分布式内存缓存服务器的相关文章

Memcached:高性能的分布式内存缓存服务器

特征: u 协议简单: n 基于文本行的协议 u 基于libevent的事件处理: n 程序库,能实现连接数的增加,O(1)性能 u 内置内存存储方式 n 数据存储在内存,重启数据消失,在数据达到某个值时,基于LRU(Last Recently Used)算法删除不使用的缓存 u Memcached互不通信的分布式 n 服务器端没有分布式功能,实现分布式取决于客户端 n  Memcached的使用: u 保存的方法: n add:仅当存储空间不存在相同的数据才保存 n replace:仅当存储空

Spring Boot集成Hazelcast实现集群与分布式内存缓存

Hazelcast是Hazelcast公司开源的一款分布式内存数据库产品,提供弹性可扩展.高性能的分布式内存计算.并通过提供诸如Map,Queue,ExecutorService,Lock和JCache等Java的许多开发人员友好的分布式实现. 了解Hazelcast Hazelcast特性 简单易用 Hazelcast是用Java编写的,没有其他依赖关系.只需简单的把jar包引入项目的classpath即可创建集群. 无主从模式 与许多NoSQL解决方案不同,Hazelcast节点是点对点的.

memcached 内存缓存服务器

hash一致算法 [确保sasl-devel安装包已经安装,可以使用ssl认证] yum -y installcyrus-sasl-devel [编译安装 libevent 事件驱动] http://libevent.org/ 下载 libevent-2.0.20-stable.tar.gz ./configure --prefix=/usr/local/libevent make && make install make[3]: Entering directory`/home/libe

高性能的分布式内存对象缓存系统Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 外文名 memcached 所    属 缓存系统 编写语言 不限 通信手段 memcached协议 目录 1功能 2特征 ? 协议 ? 事件处

高效缓存服务器Memcached(一)

一.Memcached 1.memcached 是什么 Memcached是一款开源.高性能.分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序.它是一个基于内存的"键值对"存储,用于存储数据库调用.API调用或页面引用结果的直接数据,如字符串.对象等.Memcached是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件.现在已成为mixi.haten

memcached 缓存服务器

Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点: 1.C/S架构,协议简单: 2.基于libevent的事件处理(epoll): 3.Slab Allocation内存管理机制: 4.基于客户端的分布式: Memcached中保存的数据都在内存中,因此重启memcached,会导致全部数据丢失: 另外,内存容量达到指定值之后,就基于LRU(Le

memcached缓存服务器介绍及其安装过程

Memcache是什么? memcached是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件.现在 已成为mixi.hatena.Facebook.Vox.LiveJournal等众多服务中提高Web应用扩展性的重要因素. Memcached是一款开源.高性能.分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序.许多Web应用都将数据保存到RDBMS中,应用服

Memory Cache(内存缓存)

当Google测试了Google Search服务的可用性后,发现速度是最影响Web应用的可用性的因素之一.相对于作用相同但是速度慢的应用,用户更喜欢速度快的应用.多来年,Google已经掌握了如何使应用运行更快,甚至是有上百万的用户访问这个应用.提高Web应用的速度的一个方法就是为存储使用分布式的内存缓存,而不是从磁盘中获取经常用的数据. 当你将信息放到DataStore上的时候,你的信息被永久地保存了,被保存在云中某个地方的磁盘中,甚至你的应用不在使用,也会被备份和维护. 内存缓存遍布于云中

Varnish反向代理缓存服务器

缓存及加速 高性能缓存服务器1.1 Varnish概述一款高性能.开源的反向代理服务器和缓存服务器(一台varnish可以抵6台Squid)Varnish使用内存做为缓存设备(纯内存缓存服务器方案),相对于Squid(采用硬盘缓存),拥有更快的缓存速度(varnish内存管理完全交给内核,但当缓存内容超过阈值时,内核会自动将一部分缓存存入swap中,让出内存) 1.Varnish进程 varnish主要运行两个进程:Management 进程和Child进程(也称为Cache进程)Managem