首页 > 学院 > 开发设计 > 正文

Memcached

2019-11-15 02:12:29
字体:
来源:转载
供稿:网友
Memcached

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

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

存储方式:

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

使用技巧:

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

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

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

2、在cmd下输入'c:/memcached/memcached.exe-dinstall'安装

3、再输入:'c:/memcached/memcached.exe-dstart'启动。

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

4、很简单。不过还没完,你只是安装了一个memcachedcachingserver,还没有和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-yinstallmemcached

设置为开机启动 chkconfig--level2345memcachedon

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

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

yumgroupinstall"DevelopmentTools"

常用操作

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::replaceR对一个已有的key进行覆写操作

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

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

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

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

memcached的工作原理:

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

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

memcachedb:

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

我们是站在巨人的肩膀上的。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没有关系,两者作用是不一样的,没有联系的。


上一篇:GD库使用小结---2

下一篇:Smarty

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表