Heim  >  Artikel  >  php教程  >  Memcached,memcached安装

Memcached,memcached安装

WBOY
WBOYOriginal
2016-06-13 09:05:27869Durchsuche

Memcached,memcached安装

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

存储方式:

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。

使用技巧:

许多语言都实现了连接memcached的客户端,其中以Perl、PHP为主。

一、这里介绍windows环境的安装。

1、下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached

2、在cmd下输入 'c:\memcached\memcached.exe -d install' 安装

3、再输入: 'c:\memcached\memcached.exe -d start' 启动。

以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

4、很简单。不过还没完,你只是安装了一个memcached caching server,还没有和php建立关联。所以在php程序里还不能运用。

由于我的php版本是5.2.17的,下载的php_memcache.dll也要是对应的。如果你的php是5.3+的,可以在这里下载

 php_memcache-cvs-20090703-5.3-nts-VC6-x86.zip

安装与平时添加扩展完全一样,把dll文件拷到你的php目录的ext目录下,然后,

在php.ini中添加extension=php_memcache.dll,重启服务器,在phpinfo里面就应该可以看到配置信息。

二、CentOS 下的安装

安装 yum -y install memcached

设置为开机启动 chkconfig --level 2345 memcached on

启动和停止 /etc/init.d/memcached start|stop

补充:如果安装缺少其他支持,可以:

yum groupinstall "Development Tools"

常用操作

Memcache::add                 添加一个值,如果已经存在,则返回false 

Memcache::addServer           添加一个可供使用的服务器地址 

Memcache::close                关闭一个Memcache对象 

Memcache::connect             创建一个Memcache对象 

Memcache::debug              控制调试功能 

Memcache::decrement          对保存的某个key中的值进行减法操作 

Memcache::delete              删除一个key值 

Memcache::flush                清除所有缓存的数据 

Memcache::get                 获取一个key值 

Memcache::getExtendedStats   获取进程池中所有进程的运行系统统计 

Memcache::getServerStatus     获取运行服务器的参数 

Memcache::getStats            返回服务器的一些运行统计信息 

Memcache::getVersion               返回运行的Memcache的版本信息 

Memcache::increment                对保存的某个key中的值进行加法操作 

Memcache::pconnect                 创建一个Memcache的持久连接对象 

Memcache::replace                   R对一个已有的key进行覆写操作 

Memcache::set                       添加一个值,如果已经存在,则覆写 

Memcache::setCompressThreshold    对大于某一大小的数据进行压缩 

Memcache::setServerParams          在运行时修改服务器的参数  

<?<span>php  
</span><span>//</span><span>连接Memcache  </span>
<span>$mem</span> = <span>new</span><span> Memcache;  
</span><span>$mem</span>->connect("localhost", 11211<span>);  
</span><span>//</span><span>保存数据  </span>
<span>$mem</span>->set('key1', 'This is first value', 0, 60<span>);  
</span><span>$val</span> = <span>$mem</span>->get('key1'<span>);  
</span><span>echo</span> "Get key1 value: " . <span>$val</span> ."<br>"<span>;  
</span><span>//</span><span>替换数据  </span>
<span>$mem</span>->replace('key1', 'This is replace value', 0, 60<span>);  
</span><span>$val</span> = <span>$mem</span>->get('key1'<span>);  
</span><span>echo</span> "Get key1 value: " . <span>$val</span> . "<br>"<span>;  
</span><span>//</span><span>保存数组数据  </span>
<span>$arr</span> = <span>array</span>('aaa', 'bbb', 'ccc', 'ddd'<span>);  
</span><span>$mem</span>->set('key2', <span>$arr</span>, 0, 60<span>);  
</span><span>$val2</span> = <span>$mem</span>->get('key2'<span>);  
</span><span>echo</span> "Get key2 value: "<span>;  
</span><span>print_r</span>(<span>$val2</span><span>);  
</span><span>echo</span> "<br>"<span>;  
</span><span>//</span><span>删除数据  </span>
<span>$mem</span>->delete('key1'<span>);  
</span><span>$val</span> = <span>$mem</span>->get('key1'<span>);  
</span><span>echo</span> "Get key1 value: " . <span>$val</span> . "<br>"<span>;  
</span><span>//</span><span>清除所有数据  </span>
<span>$mem</span>-><span>flush</span><span>();  
</span><span>$val2</span> = <span>$mem</span>->get('key2'<span>);  
</span><span>echo</span> "Get key2 value: "<span>;  
</span><span>print_r</span>(<span>$val2</span><span>);  
</span><span>echo</span> "<br>"<span>;  
</span><span>//</span><span>关闭连接  </span>
<span>$mem</span>-><span>close();  
</span>?>  

memcached 的工作原理:

首先 memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。

PHP 等客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。

memcachedb:

MemcacheDB是一个分布式、key-value形式的持久存储系统。它不是一个缓存组件,而是一个基于对象存取的、可靠的、快速的持久存储引擎。协议跟memcache一致(不完整),所以很多memcached客户端都可以跟它连接。MemcacheDB采用Berkeley DB作为持久存储组件,故很多Berkeley DB的特性的他都支持。

我们是站在巨人的肩膀上的。MemcacheDB的前端缓存是Memcached

前端:memcached的网络层

后端:BerkeleyDB存储

 

memcached和smarty的关系及区别是什么啊?

Memcache是一个高性能的分布式的内存对象缓存系统,把缓存记录到内存的系统.。

例如,从数据库中获取列表显示,但并不想每次都读取数据库,这样就需要用到缓存,而memcache就是其中的一种,它是把记录保存在内存中使用

例如要重db获取数据显示出来,  db -> memcache -> client

首先先判断memcache有没有数据,如果没有则读取DB,然后把db获取到的记录保存在memcache

下次再需要读取记录时,就可以直接在memcache中读取,这样就可以分担数据库的负担,而且速度快很多。

Smarty是一个使用PHP写出来的模板引擎,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计。

smarty是运行在MVC结构的view中。

例如 php 我们要显示一个变量,需要这样写 echo $a;

而用smarty则需要这样写 {$a} ,经过编译后,会自动显示出 echo $a;,是一样的,smarty中的缓存,php要运行后,才可以输出到浏览器,php运行生成html输出是需要运算的,而smarty则会把之前运行过的php生成后的html保存起来,如果再调用这个php则会直接输出之前的html.起到缓存作用。

memcache 和 smarty没有关系,两者作用是不一样的,没有联系的。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn