Memcached概念、作用、运行原理、特性、不足简单梳理(1)
大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过。
这都没什么关系,本文旨在从各个角度综合的介绍这种产品,尽量深入浅出,如果能对您现在或以后的工作有所帮助,笔者将感到无比荣幸。
Memcached概念、作用、运行原理、特性、不足简单梳理(1)
Memcached下载安装、NET对Memcached进行CRUD操作(2)
Memcached存Session数据、访问安全性、使用场景总结(3)
官方解释如下:
What is Memcached? 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. 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 popular languages.
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将对象保存在一个巨大的Hash表中,它还使用NewHash算法来管理Hash表,从而获得进一步的性能提升。所以当分配给Memcached的内存足够大的时候,Memcached的时间消耗基本上只是网络Socket连接了。
总之,Memcached用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
Memcached处理的原子是每一个(key,value)对(以下简称kv对),key会通过一个hash算法转化成hash-key,便于查找、对比以及做到尽可能的散列。同时,memcached用的是一个二级散列,通过一张大hash表来维护。
Memcached有两个核心组件组成:服务端(Server)和客户端(Client),在一个memcached的查询中,Client先通过计算key的hash值来确定kv对所处在的Server位置。当Server确定后,客户端就会发送一个查询请求给对应的Server,让它来查找确切的数据。因为这之间没有交互以及多播协议,所以 memcached交互带给网络的影响是最小化的。
1、开源
开源地址:https://github.com/memcached/memcached/wiki
2、高性能
无论哪一种数据库(oracle,mssql,mysql,db2……),再怎么优化,最终也避不开与慢速的硬盘进行数据交换,但往往一旦涉及到了硬盘的io操作,存取性能就会急剧下降。而Memcached的全部操作自始至终都是在内存中进行的,所以存取数据的效率非常高。
当然,大型网站对于数据库的操作都会做优化(读写分离,按照业务分库分表)。
3、分布式
分布式系统网上比较专业的解释是:一种计算机硬件的配置方式和相应的功能配置方式。它是一种多处理器的计算机系统,各处理器通过互连网络构成统一的系统。系统采用分布式计算结构,即把原来系统内中央处理器处理的任务分散给相应的处理器,实现不同功能的各个处理器相互协调,共享系统的外设与软件。这样就加快了系统的处理速度,简化了主机的逻辑结构。
Memcache的分布式特性主要表现是:Memcached服务器端可以安装在任意数量的server上,提供并行存储和计算的能力;Memcached客户端和服务器端可以单独安装在任何独立server上。
1、数据是保存在内存当中的,一旦服务进程重启,数据会全部丢失
对策:可以采取更改Memcached的源代码,增加定期写入硬盘的功能
2、Memcached以root权限运行,而且Memcached本身没有任何权限管理和认证功能,安 全性不足
对策:可以将Memcached服务绑定在内网IP上,通过防火墙进行防护