Memcached的基础梳理

1 、Memcached 概念mysql

官方解释以下:git

What is Memcached?github

Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.web

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.算法

Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches. Its API is available for most popularsql

languages.数据库

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

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交互带给网络的影响是最小化的。

4 、Memcached 特性

一、开源

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

二、高性能

不管哪种数据库(oracle,mssql,mysql,db2……),再怎么优化,最终也避不开与慢速的硬盘进行数据交换,但每每一旦涉及到 了硬盘的io操做,存取性能就会急剧降低。而Memcached的所有操做自始至终都是在内存中进行的,因此存取数据的效率很是高。

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

三、分布式

分布式系统网上比较专业的解释是:一种计算机硬件的配置方式和相应的功能配置方式。它是一种多处理器的计算机系统,各处理器经过互连网络构成统一 的系统。系统采用分布式计算结构,即把原来系统内中央处理器处理的任务分散给相应的处理器,实现不一样功能的各个处理器相互协调,共享系统的外设与软件。这 样就加快了系统的处理速度,简化了主机的逻辑结构。

Memcache的分布式特性主要表现是:Memcached服务器端能够安装在任意数量的server上,提供并行存储和计算的能力;Memcached客户端和服务器端能够单独安装在任何独立server上。

5

Memcached 不足之处

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

对策:能够采起更改Memcached的源代码,增长按期写入硬盘的功能

二、Memcached以root权限运行,并且Memcached自己没有任何权限管理和认证功能,安 全性不足

对策:能够将Memcached服务绑定在内网IP上,经过防火墙进行防御

欢迎关注个人公众号(同步更新文章)DoNet技术分享平台

阅读原文

相关文章
相关标签/搜索