概述
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。
Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过Memcached协议与守护进程通信。但是它并不提供冗余服务(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。
工作原理
首先Memcached是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端API包括 Perl/PHP/Python/Ruby/Java/C#/C等等。
客户端在与Memcached服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符key,存取操作均通过这个 key 进行,保存到 Memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么Memcached能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。
Memcached 采用了C/S的模式,在 server 端启动服务进程,在启动时可以指定监听的ip,端口,内存大小等几个关键参数。一旦启动,服务就一直处于可用状态。
Memcached 的目前版本是通过C实现,采用了单进程,单线程,异步I/O,基于事件 (event_based) 的服务方式。使用 libevent 作为事件通知实现。
多个Memcached Server可以协同工作,但这些 Server 之间是没有任何通讯联系的,每个Server 只是对自己的数据进行管理。Client 端通过指定Server端的ip地址(或域名)来初始化。
需要缓存的对象或数据是以 key->value 对的形式保存在Server端的内存中。key 的值通过 hash 进行转换,根据hash值客户端就可以把 value 传递到对应的具体的某个Server 上缓存起来。当需要获取对象数据时,也根据 key 进行。首先对 key 进行 hash,通过获得的值可以确定它被保存在了哪台Server上,然后再向该Server发出请求。
其实,Memcached 的工作就是在专门的机器的内存里维护一张巨大的 hash 表,来存储经常被读写的一些数据,如文件,对象,视频,声频等等,由于内存的存取速度比磁盘的存取速度快,从而极大的提高应用的运行效率。
这里需要注意的是,既然Memcached采用了C/S的模式,那么必然存在服务器端和客户端。以上所说的客户端千万不能与自己的应用系统的客户端混为一谈,服务器端也不能与自己应用的服务器混为一谈。
由图可见,Memcached缓存系统中的服务器端就是我们需要存储数据的“内存”。 Memcached缓存系统的客户端就是我们应用服务器在处理数据时,为了快速获取之前可能已经缓存的数据而调用的API,这些API可以用不同语言来实现,只要符合Memcached的协议即可。在实际中这些API类库是和应用程序放在同一台应用服务器上,这些API是应用程序的一部分。因此Memcached的客户端就是一些采用不同语言实现好的API,我们要用这些API来存取Memcached服务器内存中的数据。
Memcached Server安装部署
机器数量
一台或多台机器。多台机器时候,各机器是相互独立的,只需要连接到网络即可,但是,由于Memcached的设计是没有安全认证等机制的,因此Memcached服务器机应该放在防火墙后。
硬件环境
Memcached服务器机只是作为应用的一个缓存,对磁盘需求不高,但对内存和CPU要求高,最低配置或基本配置:内存一般要1个G 以上 / 一台。
软件环境
Linux版本,先检查linux内核版本,建议将Memcached 安装在内核2.6以上。因为Memcached 需要用到libevent和epoll。
Libevent库,Memcached安装前首先确定你的linux服务器上面安装了libevent库
inux下环境安装
libevent下载:
http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.17-stable.tar.gz
Memcached下载
http://Memcached.googlecode.com/files/Memcached-1.4.13.tar.gz
第一步:解压libevent: tar zxvf libevent-2.0.17-stable.tar.gz
然后进入解压后的目录,安装libevent是安装 Memcached 的唯一前提条件。它是 Memcached 所依赖的异步事件通知库。
第二步:在解压后的目录里输入命令:
./configure --prefix=/usr/local/libevent && make && make install
第三步:检查是否安装成功: #cd /usr/local/libevent/lib 输入ls命令查看
如果有libevent-1.3c.so.1 libevent-1.3c.so.1.0.3 libevent.a libevent.la libevent.so 这几个文件存在,说明安装成功
第四步:解压Memcached,tar zxvf Memcached-1.4.13.tar.gz 并进入解压后的目录
第五步:在解压后的目录输入命令: ./configure --with-libevent=/usr/local/libevent --prefix=/usr/local/Memcached && make && make install
第六步:检查是否安装成功: #cd /usr/local/Memcached/bin
如果Memcached 这个文件存在,说明安装成功
第七步:执行 #cd /usr/local/Memcached/bin
# ./Memcached -h
如果出现:
1. Memcached 1.2.6
2. -p TCP port number to listen on (default: 11211)
3. -U UDP port number to listen on (default: 0, off)
4. -s unix socket path to listen on (disables network support)
5. -l interface to listen on, default is INDRR_ANY
6. -d run as a daemon
7. -r maximize core file limit
8. -u assume identity of (only when run as root)
9. -m max memory to use for items in megabytes, default is 64 MB
10. -M return error on memory exhausted (rather than removing items)
11. -c max simultaneous connections, default is 1024
12. -k lock down all paged memory
13. -v verbose (print errors/warnings while in event loop)
14. -vv very verbose (also print client commands/reponses)
15. -h print this help and exit
16. -i print Memcached and libevent license
17. -b run a managed instanced (mnemonic: buckets)
18. -P save PID in , only used with -d option
19. -f chunk size growth factor, default 1.25
20. -n minimum space allocated for key+value+flags, default 48
说明安装成功,并且路径配置正确。
启动Memcache的服务器端的命令为:
#/usr/local/Memcached/bin/Memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/Memcached.pid
注意:/usr/local/Memcached/bin/Memcached是Memcached的安装地址
-d选项 启动一个守护进程,可以启动多个守护进程,但是端口不能一样。这样就可以在 一台机器上拥有多个Memcached
-m选项 分配给memcache使用的内存数量,单位是MB,命令中是10MB,
-u选项 运行memcache的用户,命令中是root,
-l选项 监听的服务器IP地址,如果有多个地址的话,命令中指定了服务器的IP地址本地主机127.0.0.1,
-p选项 设置memcache监听的端口,我这里设置了11211,最好是1024以上的端口,
-c选项 最大运行的并发连接数,默认是1024,命令中设置为256,一般按照服务器的负载 量来设定,
-P选项 设置保存memcache的pid文件,命令中保存在 /tmp/Memcached.pid。
如果想开机自动启动的话,只需在/etc/rc.d/rc.local中加入一行上面命令。
上面命令有些选项可以参考一下:即,ip不指定时,默认为本地主机;
Memcached使用时机
在使用 Memcached 改进应用程序性能时,可以对一些关键的过程和步骤进行修改,但并非任何时候都可以使用Memcached缓存数据,或者说Memcached可以缓存大多数格式的数据,但使用不当,不仅没有起到缓存那种快速响应作用,可能增加了过程时间,反而变慢。
两个简单的准则
不要缓存频繁改变的数据。如果要缓存的数据频繁改变,您需要不断修改存储在缓存内的值,这将限制缓存的价值。
如果您拥有直接识别一个值的 ID,则您不必缓存那个值。数据库能够使用某个值的 ID 非常快速地查询该值。
Memcached 不是一个数据库
最常见的 Memcached 误用就是把它用作一个数据存储,而不是一个缓存。Memcached 的首要目的就是加快数据的响应时间,否则数据从其他数据源构建或恢复需要很长时间。
切不可将 Memcached 用作运行应用程序所需信息的惟一信息源,数据应总是可以从其他信息源获取。此外,要记住 Memcached 只是一个键/值的存储。不能在数据上执行查询,或者对内容进行迭代来提取信息。应该使用它来存储数据块或对象以备批量使用。
不要缓存数据库行或文件
虽然可以使用 Memcached 存储加载自数据库的数据行,但这实际上是查询缓存,并且大多数数据库都提供各自的查询缓存的机制。其他的对象,比如文件系统的图像或文件的情况与此相同。很多应用程序和 web 服务器针对此类工作已经有了一些很好的解决方案。
如果在加载和格式化后,使用它来存储全部信息块,就可以从 Memcached 获得更多的实用工具和性能上的改善。
Memcached 并不安全
为了确保最佳性能,Memcached 并未提供任何形式的安全性,没有身份验证,也没有加密。这意味着对 Memcached 服务器的访问应该这么处理:一是通过将它们放到应用程序部署环境相同的私有侧,二是如果安全性是必须的,那么就使用 UNIX® socket 并只允许当前主机上的应用程序访问此 Memcached 服务器。
这多少牺牲了一些灵活性和弹性,以及跨网络上的多台机器共享 RAM 缓存的能力,但这是在目前的情况下确保 Memcached 数据安全性的惟一一种解决方案。
我们在部署Memcached服务器机时候一定要注意,我们可以把它放到防火墙后,如果有防火墙的话。
<!--EndFragment-->
相关推荐
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动...压缩包中为memcached安装使用说明和安装文件。
### Net Memcached安装及使用说明 #### 一、概述 Net Memcached是一种高效的分布式缓存系统,主要用于硬盘缓存服务,能够充分利用硬盘空间来存储缓存信息,从而直接提升访问速度,同时不会占用过多的内存资源。这...
MemCached.net 是针对.NET环境的一个客户端实现,它为.NET开发者提供了方便地使用Memcached服务的接口。 安装MemCached首先需要在服务器上部署Memcached服务。在Windows环境下,你可以下载预编译的Windows版本或...
4. **启动Memcached服务**:在Linux上使用`memcached -d`启动服务,在Windows上运行服务管理程序启动Memcached。 **使用PHP连接Memcached** 1. **导入扩展**:在PHP代码中,首先需要引入`Memcache`类,如`require_...
“memcached安装及java应用使用memcached”这一标题暗示了我们要讨论的是一个关于分布式内存缓存系统——memcached的安装过程以及如何在Java应用程序中使用它。Memcached是一个高性能、轻量级的分布式内存对象缓存...
6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功! Memcached的基本设置参数: -p 监听的端口 -l 连接的IP地址, 默认是本机 -d start 启动memcached服务 -d restart 重起memcached服务 ...
4. **缓存策略**: Memcached使用LRU(最近最少使用)策略进行缓存替换,当内存空间不足时,最近最少使用的数据会被自动清除,以腾出空间给新的数据。 5. **轻量级**: Memcached自身体积小,启动快,资源占用少,非常...
2. **安装**:在命令行中运行`c:\memcached\memcached.exe -d install`以安装服务。 3. **启动**:运行`c:\memcached\memcached.exe -d start`启动服务,设置为开机自启。 **五、Memcached客户端** Memcached的...
【Memcached 使用说明】 Memcached 是一套由 danga.com(LiveJournal 技术团队)开发的分布式内存对象缓存系统,旨在减少数据库负载并提升应用性能。它通过将数据存储在内存中,使得高并发环境下的数据访问更为快速...
Memcached 使用 libevent 库来处理网络事件,因此首先需要安装 libevent 库。 1. **下载 libevent 源码包** ```shell wget https://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz ```...
**标题:** memcached安装 **内容:** 在IT领域,缓存技术是提升Web应用程序性能的关键要素之一,而memcached就是一款广泛使用的分布式内存对象缓存系统。它能够存储和检索数据,以减少对数据库的访问,从而提高...
Linux系统上的Memcached安装教程 Memcached是一款高性能、分布式内存对象缓存系统,它广泛用于减轻数据库负载,提高Web应用的性能。在这个教程中,我们将详细介绍如何在Linux系统上安装和配置Memcached,以及如何...
### 一、Memcached安装 1. **下载Memcached**:首先,你需要从官方网站获取最新版的Memcached源码,或者在Windows环境下,可以直接下载编译好的`memcached.exe`。将`memcached.exe`放在一个方便的位置,例如`C:\...
**Memcached安装:** 1. **下载源码**: 获取libevent和Memcached的源码包,如`libevent-1.4.9-stable.tar.gz`和`memcached-1.4.9.tar.gz`。 2. **解压源码**: 使用`tar`命令解压缩下载的源码包。 3. **安装libevent*...
文件详细描述了Memcached相关原理和使用方法,内容包括:Memcached原理介绍、Memcached安装和使用说明、Memcached使用的技巧等。
### Memcached安装部署手册知识点详解 #### 一、概述 Memcached是一款高性能的分布式内存对象缓存系统,通过减轻数据库负载来加速动态Web应用、提高网站访问速度。它通过在内存中缓存数据和对象来减少读取数据库的...
3. **安装memcached**: 使用包管理器安装memcached,如: - Debian/Ubuntu: `sudo apt-get install memcached` - CentOS/RHEL: `sudo yum install memcached` 4. **启动与设置开机启动**: 启动memcached服务并...
本文将详细讲解MemCached的安装过程,针对Linux和Windows两种操作系统,结合提供的文件进行说明。 首先,我们来看`libevent-1.4.11-stable.tar.gz`,这是一个用于处理网络事件的库,Memcached依赖于它来处理网络...
memcached程序,安装说明,以及简单代码实例
### Linux 下 Memcached 的安装与启动详解 #### 一、Memcached 简介 Memcached 是一款高性能的分布式内存对象缓存系统,用于减轻数据库负载,加速动态 Web 应用程序的速度。它通过在内存中缓存数据和对象来减少...