Memcached简述

来源:互联网 发布:mac电池健康度怎么看 编辑:程序博客网 时间:2024/05/21 09:52
Memcached简述

大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过。这都没什么关系,本文旨在从各个角度综合的介绍这种产品,尽量深入浅出,如果能对您现在或以后的工作有所帮助,笔者将感到无比荣幸。

一、Memcached 概念

Memcached 是一个开源、高性能、分布式内存对象缓存系统。

官网地址:http://memcached.org/

下载地址:http://www.memcached.org/files/memcached-1.4.25.tar.gz

Memcache和Memcached到底有什么区别?

Memcache 是 danga.com 的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来

构建自己大负载的网站,来分担数据库的压力。

Memcached 是一个开源、高性能、分布式内存对象缓存系统 。

Memcache 是这个项目的名称,而 memcached 是它服务器端的主程序文件名 。

二、Memcached 作用

Memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作。客户端首先与 Memcached

服务建立连接,然后存取对象。保存在 Memcached 中的对象是放置在内存中的,而不是在硬盘上。

Memcached 进程运行之后,会预申请一块较大的内存空间,自己进行管理,用完之后再申请,不是每次需要的

时候去向操作系统申请。Memcached将对象保存在一个巨 大的Hash表中,它还使用NewHash算法来管理Hash表,

从而获得进一步的性能提升。所以当分配给Memcached的内存足够大的时 候,Memcached的时间消耗基本上只是

网络Socket连接了。

总之,Memcached用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次

数,从而提高动态、数据库驱动网站的速度。

三、Memcached 运行原理

Memcached处理的原子是每一个(key,value)对(以下简称kv对),key会通过一个hash算法转化成hash-key,

便于查找、对比以及做到尽可能的散列。同时,memcached用的是一个二级散列,通过一张大hash表来维护。

Memcached有两个核心组件组成:服务端(Server)和客户端(Client),在一个memcached的查询中,Client

先通 过计算key的hash值来确定kv对所处在的Server位置。当Server确定后,客户端就会发送一个查询请求给

对应的Server,让它来查找确 切的数据。因为这之间没有交互以及多播协议,所以 memcached交互带给网络的

影响是最小化的。

Memcached概念、作用、运行原理、特性、不足简单梳理(1)

四、Memcached 特性

1、开源

开源地址:https://github.com/memcached/memcached/wiki

2、高性能

无论哪一种数据库(oracle,mssql,mysql,db2……),再怎么优化,最终也避不开与慢速的硬盘进行数据交换,

但往往一旦涉及到 了硬盘的io操作,存取性能就会急剧下降。而Memcached的全部操作自始至终都是在内存中

进行的,所以存取数据的效率非常高。

当然,大型网站对于数据库的操作都会做优化(读写分离,按照业务分库分表)。

3、分布式

分布式系统网上比较专业的解释是:一种计算机硬件的配置方式和相应的功能配置方式。它是一种多处理器的

计算机系统,各处理器通过互连网络构成统一 的系统。系统采用分布式计算结构,即把原来系统内中央处理器

处理的任务分散给相应的处理器,实现不同功能的各个处理器相互协调,共享系统的外设与软件。这 样就加快

了系统的处理速度,简化了主机的逻辑结构。

Memcache的分布式特性主要表现是:Memcached服务器端可以安装在任意数量的server上,提供并行存储和计算

的能力;Memcached客户端和服务器端可以单独安装在任何独立server上。

五、Memcached 不足

1、数据是保存在内存当中的,一旦服务进程重启,数据会全部丢失

对策:可以采取更改Memcached的源代码,增加定期写入硬盘的功能

2、Memcached以root权限运行,而且Memcached本身没有任何权限管理和认证功能,安全性不足

对策:可以将Memcached服务绑定在内网IP上,通过防火墙进行防护

原创粉丝点击