Memcached原理

Memcached是一套高性能的、分布式内存对象缓存系统。它由C写成,以Key/Value的方式将数据储存在内存中。

一、Memcached特性

Memcached作为高速运行的分布式缓存服务器,具有以下特点:

1、协议简单

Memcached的服务器客户端通信使用简单的文本协议,而不是笨重复杂的XML等格式。因此,通过telnet 也能在memcached上保存数据、取得数据;

2、基于libevent的事件处理

Libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能;

3、内置内存存储方式

Memcached中保存的数据都存储在Memcached内置的内存存储空间中。 由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。 另外,内容容量达到指定值(启动时可以通过-m参数配置)之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存,不用担心,这个功能是可以配置的:Memcached启动时通过"-M"参数可以禁止LRU。不过,Memcached本身是为缓存而设计的,建议开启LRU.另外,Memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题;

4、Memcached不互相通信的分布式

Memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能,各个Memcached不会互相通信以共享信息。Memcached的分布式是完全由客户端程序库实现的,这种分布式是Memcached的最大特点。通过这种方式,Memcached Server之间的数据不需要同步,也就不需要互相通信了。

时间: 2024-10-12 16:52:02

Memcached原理的相关文章

memcached原理详述及配置

如果一个网站流量很大,则查询数据库将会耗费大量时间.如果将经常查询的的数据和对象缓存到内存中,则需要查询数据库时,直接返回内存中缓存的数据.这中静态化方式则会高效很多.分布式缓存系统是为了解决数据库服务器和web服务器直接的瓶颈.其中memcached是一个开源.高性能.分布式的内存对象缓存系统.主要通过在内存中缓存数据和对象减轻数据库的负载来加速动态web程序.内存中缓存的数据通 过API的方式被存取,数据就像一张大的HASH表,以键-值对方式存在. 读取 执行读取操作的顺序是从 Web 层获

深入理解Memcached原理

1.为什么要使用memcache 由于网站的高并发读写需求,传统的关系型数据库开始出现瓶颈,例如: 1)对数据库的高并发读写: 关系型数据库本身就是个庞然大物,处理过程非常耗时(如解析SQL语句,事务处理等).如果对关系型数据库进行高并发读写(每秒上万次的访问),那么它是无法承受的. 2)对海量数据的处理: 对于大型的SNS网站,每天有上千万次的数据产生(如twitter, 新浪微博).对于关系型数据库,如果在一个有上亿条数据的数据表种查找某条记录,效率将非常低. 使用memcache能很好的解

Memcached原理分析

Memcached的内存管理方式 Memcached采用了名为Slab Allocation的机制分配,管理内存. Slab Allocation的原理相当简单.将分配的内存分割成各种尺寸的块(chucnk),并把尺寸相同的块分成组(chucnk的集合)如图: 而且slab Allocation还有重复使用已分配内存的目的.也就是说,分配到的内存不会释放,而是重复利用.Slab Allocation 的主要术语 Page :分配给Slab 的内存空间,默认是1MB.分配给Slab 之后根据sla

memcached原理 、 部署memcached 、 Session共享

############################################################################################memcache服务器: 传统Web架构的问题:--> 许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示--> 随着数据量的增大,访问的集中,就会出现RDBMS的负担加重,数据库响应恶化,网站显示延迟等重要问题. 数据存储位置对比:性能-CPU缓存>内存>磁盘>数

memcached 原理及详细配置

memcached: 数据结构模型: 结构化数据:关系型数据库:遵循前3个范式是最基本的条件:在各种场景中都是瓶颈: 半结构化数据:xml,json,-(NoSQL是非关系型的数据库统称)等格式的数据:需要半结构化数据存储: 非结构化数据:需要非结构化数据存储:比较常见是文件系统: 互联网公司中有句话叫:缓存为王: 比如在myslq中存一个数据,检索起来非常麻烦,先要查索引,有可能还有进行多表查询,基于多表查询要做多次IO才能把数据加载到内存中,在内存中还要进行排序,排序后还要根据指定的范围进行

Memcached 原理

memcached  是以一个守护进程的方式运行于一个服务器和多个服务器之间的,等待接受客户端的连接操作,客户端可以有各种语言编写.(例如PHP). php 在客户端与服务器建立连接以后,接下来的事情就是存取对象.每个被存取的对象都会有一个唯一的key ,存取是通过key 进行操作.保存到memcached 中的对象实际上是放置在内存中的,并不是保存在cache 文件中的. 这也是为什么memcached能够如此快速的原因.

Memcached原理深度分析详解

Memcached是 danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能.关于这个东 西,相信很多人都用过,本文意在通过对memcached的实现及代码分析,获得对这个出色的开源软件更深入的了解,并可以根据我们的需要对其进行更进一 步的优化.末了将通过对BSM_Memcache扩展的分析,加深对memcached的使用方式理解. 本文的部分内容可能需要比较好的数学基础作为辅助. ◎Memcached是什么 在阐述这

memcached原理 部署memcached 、 Session共享

案例1:构建memcached服务案例2:LNMP+memcached案例3:PHP的本地Session信息案例4:PHP实现session共享1 案例1:构建memcached服务1.1 问题 本案例要求先快速搭建好一台memcached服务器,并对memcached进行简单的增.删.改.查操作:安装memcached软件,并启动服务使用telnet测试memcached服务对memcached进行增.删.改.查等操作1.2 方案 使用1台RHEL7虚拟机作为memcached服务器(192.

Memcached原理与部署

Memcached概述 一套开源的高性能分布式内存对象缓存系统所有的数据都存储在内存中支持任意存储类型的数据提高网站的访问速度 Memcached路由算法 ●求余数hash算法先用key做hash运算得到一个整数,再去做hash算法,根据余数进行路由,这种算法适合大多数据需求,但是不适合用在动态变化的环境中●一致性hash算法按照hash算法把对应的key通过一定的hash算法处理后映射形成一一个首尾相接闭合循环,然后通过使用与对象存储一样的hash算法将机器也映射到环中,顺时针方向计算将所有对