欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Class 'Memcache' not found in Memcached与Memcache的区别 安装 memcache 有大用 有大大用

Class 'Memcache' not found in  应该安装两个扩展 memcache 和 memcached 

下面这一个例子 自己亲自试的 有大用

memcache与memcached介绍及安装配置

也许大家一看到Memcache和Memcached会有点晕,这两者有什么关系又有什么区别呢,下面先给大家说下Memcached,Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

想必大家也听说过Memcached,就是一个缓存系统,我们可以把一些经常要查询的数据放到缓存中,避免每次要使用的时候都去查询数据库。这样既能大幅的加快数据读取速度,而且也降低了服务器的压力,所以一般大访问量的网站都会用的Memcached。

Memcached与Memcache的区别

至于Memcached和Memcache的区别,其实很简单,一个是服务端,一个是客户端,就像mysql一样,我们在命令行里输入各种sql语句就能查询到需要的结果,这就是客户端,客户端接收我们输入的命令从服务端查询,mysqld就是服务端,就是响应客户端的额后台进程,在这里也一样Memcached是服务端,而Memcache就是客户端。 

所以我们要使用Memcached,首先在服务端安装好Memcached,并运行Memcached,然后安装Memcache就能使用了。 

在这里我们会详细的讲解在Linux下安装Memcached服务端,并讲解通过PHP扩展安装Memcache,以便我们直接通过PHP来测试Memcached。 

 

由于Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent

1、安装libeven

1 [root@lys2 src]# wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
2 [root@lys2 src]# tar zxvf libevent-1.4.13-stable.tar.gz
3 [root@lys2 src]# cd libevent-1.4.13-stable
4 [root@lys2 libevent-1.4.13-stable]# ./configure
5 [root@lys2 libevent-1.4.13-stable]# make && make install
   
1 [root@lys2 libevent-1.4.13-stable]# rpm -qa libevent
2 libevent-1.4.13-4.el6.x86_64
   

2、安装memcached

1 [root@lys2 src]# wget http://memcached.org/files/memcached-1.4.32.tar.gz
2 [root@lys2 src]# tar zxvf memcached-1.4.32.tar.gz
3 [root@lys2 src]# cd memcached-1.4.32
4 [root@lys2 memcached-1.4.32]# ./configure
5 [root@lys2 memcached-1.4.32]# make && make install
   

安装完成后,memcached的默认目录为/usr/local/bin/memcached

1 [root@lys2 memcached-1.4.32]# ll /usr/local/bin/memcached 
2 -rwxr-xr-x 1 root root 446185 10月 16 10:03 /usr/local/bin/memcached
   

3、启动memcached

1 [root@lys2 memcached-1.4.32]# /usr/local/bin/memcached -m 32m -p 11211 -d -u root -P /var/run/memcached.pid -c 256 -vv
   

参数说明:

复制代码        
-d选项是作为守护进程在后台运行 
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB, 
-u是运行Memcache的用户,我这里是root, 
-l是监听的服务器IP地址,如果有多个地址的话 
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口, 
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定, 
-P是设置保存Memcache的pid文件
-vv是以very vrebose模式启动,将调试信息和错误输出到控制台
       
复制代码        
1 [root@lys2 memcached-1.4.32]# netstat -unlpt | grep 11211
2 tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      10449/memcached     
3 tcp        0      0 :::11211                    :::*                        LISTEN      10449/memcached     
4 udp        0      0 0.0.0.0:11211               0.0.0.0:*                               10449/memcached     
5 udp        0      0 :::11211                    :::*                                    10449/memcached
   

关闭memcached的命令为:

1 [root@lys2 memcached-1.4.32]# kill `cat /var/run/memcached.pid`
   

4、安装memcache的php扩展

复制代码        
 1 [root@lys2 src]# wget http://pecl.php.net/get/memcache-2.2.7.tgz
 2 [root@lys2 src]# tar zxvf memcache-2.2.7.tgz
 3 [root@lys2 src]# cd memcache-2.2.7
 4 [root@lys2 memcache-2.2.7]# /usr/local/php/bin/phpize   (我的是 /www/wdlinux/apache_php-5.5.9/bin/phpize)
 5 Configuring for:
 6 PHP Api Version:         20131106
 7 Zend Module Api No:      20131226
 8 Zend Extension Api No:   220131226
 9 [root@lys2 memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config    ( 我的是  ./configure --enable-memcache --with-php-config=/www/wdlinux/apache_php-5.5.9/bin/php-config )
10 [root@lys2 memcache-2.2.7]# make && make install
       
复制代码        

安装完成后会有以下提示

1 Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

(我的显示 Installing shared extensions:     /www/wdlinux/apache_php-5.5.9/lib/php/extensions/no-debug-non-zts-20121212/)

   

修改php.ini文件,把php.ini中的extension_dir='./' 修改为extension_dir='/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/'

添加如下一行代码来载入memcache扩展:

1 extension=memcache.so
   

5、测试memcache的php扩展是否安装成功

运行下面的php代码,如果输出“hello world”,就表示环境搭建成功

复制代码        
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('test','hello world',0,12);
$val = $mem->get('test');
echo $val;
?>
       
复制代码        
1 [root@lys2 data]# /usr/local/php/bin/php test.php 
2 hello world
   

 

分类: DB server    

来自 https://www.cnblogs.com/liuyisai/p/5970647.html


memcache 和 memcached 的区别分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_30000217/article/details/53586536

前言:

其实之前 LZ 有简单和学习和使用过 memcache ,但是也仅仅限于简单层面。然后最近要使用到 memcache,所以重新温习了一遍,在这里简单总结一下关于 memcache 和 memcached 的区别,大神路过就别踩了。。。

区别分析:

其实我们这里所说的 memcache 和 memcached 说的是 PHP 的扩展,假如我们要在 PHP 中使用 memcache ,我们肯定是先在服务器上安装 memcache 服务,然后为 PHP 安装对应的扩展,这样我们才能用 PHP 代码控制 memcache,那么安装完之后我们 echo phpinfo(); 会发现:

这里写图片描述

(连歌词都上去了-_-!!)

这里我们要讨论的就是图片上显示的 memcache 和 memcached:

1、memcache最早是在2004年2月开发的,最后更新是在2013年4月,而 memcached 最早是在2009年1月开发的,最后更新是在2014年1月更新的。因此 memcache的历史 比 memcached 早。更多信息大家可以参考:

memcache:http://pecl.php.net/package/memcache 
memcached:http://pecl.php.net/package/memcached

2、 memcache 是一个原生版本,完全是在 PHP 框架内开发的,支持 OO(面向对象) 和非 OO 两套接口并存,而 memcached 是建立在 libmemcached 的基础上的,只支持 OO 接口。这就意味着在安装 memcache 扩展的时候不要求安装其他的东西,但是在安装 memcached 的时候会要求你安装 libmemcached。别嫌麻烦!因为 libmemcached 是 memcache 的 C 客户端,它具有低内存,线程安全等优点。据说新浪微博之前就全面将 PHP 的 memcache 替换成 PHP 的 memcached,在高并发下,稳定性果断提高。

3、memcached 有个比较 nice 的地方,就是 flag 不是在操作的时候设置的,而是有一个统一的 setOption() 函数进行设置,我们可以举添加缓存数据为例子:

#memcache:
bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )

#memcached:
public bool Memcached::add ( string $key , mixed $value [, int $expiration ] )

从上面各自的 add 方法可以看到,memcache 的 add 方法中的第三个参数代表是否对数据进行压缩,这样假如说我的缓存需要设置过期时间,但是 flag 参数在前面,我就得每一次都对 flag 进行设置! 
而 memcached 中是使用 setOption() 来进行统一设置的(默认开启压缩)。

4、memcached 比 memcache 支持更多的 memcache 协议,大概也就是说 memcached 有更多的方法,比如 getMulti() 和 setMulti() 函数非常有用,但是 memcache 并不支持。 
更多的方法大家可以看PHP的官方手册: 
memcache:http://php.net/manual/zh/book.memcache.php 
memcached:http://php.net/manual/zh/book.memcached.php

5、差别比较大的一点是,memcached 支持 Binary Protocol,而 memcache 不支持,这意味着 memcached 会有更高的性能。但是网上很多博客说 memcached 不支持长连接,这其实不然,大家看官方手册:http://php.net/manual/zh/memcached.construct.php

这里写图片描述

上面明确的提出,当使用长链接的时候。。。。。因此 memcached是能够实现长连接的。

6、比较尴尬的一点是 memcached 和 memcache 对应的服务端名字都是 memcached,大家使用 ps aux | grep memcache 就会发现守护进程的名字是 memcached(我的环境是 ubuntu),其实后面的 d 可以理解为守护进程,因此网上有的人说 memcache 是客户端, memcached 是服务端就是这个意思,同学们不要将客户端的 memcached 和服务端的 memcached 混淆了就好。

7、两者在实现某些相同功能时所使用的算法也是有一定差异的,由于内容比较深,我也不太懂。。。。。

总结

1、本篇博客参考了很多网上的资料,加上自己的理解总结出来的。

2、从上面的分析也可以得出一个结论:memcached 比 memcache 好,因此在以后的开发过程中,大家尽量使用 memcached。



memcached的安装以及php两个扩展软件安装(memcache、memcached)

       

百度云安装包:http://pan.baidu.com/s/1pKZeDwn  k3ap        

回到顶部        

1、安装memcached

  Memcached是基于libevent的事件处理,所以它的安装依赖libevent。因此我们首先需要将libevent安装好,再进行安装memcached。

  Libevent官网:http://libevent.org/

  Memcached官网:http://www.danga.com/memcached

  安装libevent:

复制代码            
#tar –zxvf libevent-1.4.9-stable.tar.gz

#cd libevent-1.4.9-stable

#./configue --prefix=/usr

#make&make install
           
复制代码            

 

安装memcached:

复制代码            
#tar –zxvf memcached-1.4.25.tar.gz

#cd memcached-1.4.25

#./configue --with-libevent=/usr --prefix=/usr/local

#make&make install
           
复制代码            

 

试运行:

# /usr/local/bin/memcached -u 用户名

#ps –A|grep memcached       (查看是否有memcached进程)
       

 

具体启动参数以及指令可以参考:http://www.cnblogs.com/phpstudy2015-6/p/6653199.html        

 

回到顶部        

2、安装PHP中的memcache扩展

  官网下载:http://pecl.php.net/package/memcache

  安装:

复制代码            
# tar zxvf memcache-2.2.4.tgz

# cd memcache-2.2.4 cd

# /usr/local/php/bin/phpize

# ./configure --with-php-config=/usr/local/php/bin/php-config

#make&make install
           
复制代码            

  配置:

  (生成的.so扩展文件)

# ls -l /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/memcache.so

# vi /usr/local/php/lib/php.ini
       

 

  添加extension = memcache.so

  保存,重启apache

  测试:

  1、建立一个test.php文件,能够生成memcache对象则表示安装扩展成功

<?php
    $m=new memcache();
    Var_dump($m);
?>
       

 

   2、查看phpinfo();

       

 

回到顶部        

3、安装libmemcached

  官网下载:https://launchpad.net/libmemcached/+download

  简述软件:

  libmemcached是memcached的C客户端,它具有的优点是低内存,线程安全等特点。

  其中libmemcached版本1.0.9往上需要使用跟高级的gcc编译安装(它依赖更高级版本gcc的库)

  假若gcc版本过低则:

  yum install gcc44 gcc44-c++ libstdc++44-devel

  安装过程:

复制代码            
# tar zxvf libmemcached-1.0.18.tar.gz

# cd libmemcached-1.0.18

#./configure --prefix=/usr/local/libmemcached --with-memcached

#make  &&  make install
           
复制代码            

  【一般来说,gcc版本ok,安装就能ok】

  安装要注意的问题:

  1、最好能够设置安装目录,--prefix

  【以下两个来自网上,我安装时没有遇到这两个问题】

  2、安装过程中不要忘了,–with-memcached,不然会提示你

checking for memcached… no
configure: error: “could not find memcached binary”

  3、你的memcached是不是1.2.4以上的,如果不是会提示你

clients/ms_thread.o: In function `ms_setup_thread’:
/home/zhangy/libmemcached-0.42/clients/ms_thread.c:225: undefined reference to `__sync_fetch_and_add_4′
clients/ms_thread.o:/home/zhangy/libmemcached-0.42/clients/ms_thread.c:196: more undefined references to `__sync_fetch_and_add_4′ follow
collect2: ld returned 1 exit status
make[2]: *** [clients/memslap] Error 1
make[2]: Leaving directory `/home/zhangy/libmemcached-0.42′

解决办法是–disable-64bit CFLAGS=”-O3 -march=i686″,如果不用这个64位的long型数据,我想php扩展memcached,memcache也就没什么区别了,装memcached也就没什么意思了。

 

回到顶部        

4、安装PHP中的memcached扩展

  memcached的1.2.4及以上增加了CAS(Check and Set)协议,对于同一key的多进行程的并发处理问题。php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached。

  php中的memcache扩展与memcached扩展相对比,memcache扩展已经停止了维护且功能相对较少;而memcached扩展一直有维护更新,功能强大。

  官网下载:http://pecl.php.net/package/memcached

【安装memcached扩展注意】

  如果libmemcached被安装在一个非标准路径,使用--with-libmemcached-dir=DIR 来指定路径,DIR就是libmemcached安装时的prefix参数。这个路径需要包含文件include/libmemcached/memcached.h

  如果要支持压缩就需要zlib。对于非标准安装的zlib库,使用--with-zlib-dir=DIR 来指定zlib安装路径,DIR就是zib安装时的prefix参数

session处理器的支持默认是开启的。如果要关闭它,使用选项--disable-memcached-session 。

复制代码            
# tar -zxvf memcached-2.2.0.tgz

# cd memcached-2.2.0

# /usr/local/php/bin/phpize

#./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --with-memcached --with-zlib-dir=/usr/local/zlib --enable-memcached-igbinary --disable-memcahed-sasl
           
# make && make install
           
复制代码            

  【注意】上面的编译时:

  “--with-zlib-dir=/usr/local/zlib”:表示在缓存数据时用到压缩函数,如果不需要压缩的话那就不需要安装了。安装方法如下

  “--enable-memcached-igbinary”:igbinary是一个序列化工具,它将php的数据结构存储为紧密的二进制形式,在时间和空间上都有所改进,可以提高性能。要想带上这个参数那么就需要安装它 。安装方法如下

查看:

       

 

回到顶部        

5、安装zlib与igbinary

  官方下载:http://www.zlib.net (zlib)        

       http://pecl.php.net/package/igbinary  (igbinary)

【安装zlib】

复制代码            
# tar -xvzf zlib-1.2.5.tar.gz

# cd zlib-1.2.5.tar.gz

# ./configure --prefix=/usr/local/zlib

# make && make install
           
复制代码            

 

【安装igbinary扩展】

igbinary是php中的一个扩展

复制代码            
# tar –zxvf igbinary-1.1.1.tgz

# cd igbinary-1.1.1

# /usr/lcoal/php/bin/phpize

# ./configure

# make && make install
           
复制代码            

 

 

(以上是自己的一些见解,若有不足或者错误的地方请各位指出)

作者:那一叶随风        

 声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接

来自 https://www.cnblogs.com/phpstudy2015-6/p/6670103.html



Memcached与Memcache的区别及安装

前段时间因工作需要了解了一些关于memeched缓存的技术,并进行了整理如下:

说明:

Memcache和Memcached 其实是一个东西,只是php中要是用的扩展不一样;

windows下只能安装php_memcache.dll 扩展并不存在 php_memcached.dll, 所以windows 中只能使用$mcd = new Memcache() 不能使用new Memcached();

memcached的1.2.4及以上增加了CAS(Check and Set)协议,对于同一key的多进行程的并发处理问题。但php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached。

php中的memcache扩展与memcached扩展相对比,memcache扩展已经停止了维护且功能相对较少;而memcached扩展一直有维护更新,功能强大。

 一.下载memcached服务:

下载地址:https://pan.baidu.com/share/init?surl=c1Yep6C  密码:jazy

二.安装memcached:

如果在没有安装过的情况下,出现"failed to install service or service already installed"错误,则是cmd.exe需要用管理员身份运行。


  以管理员身份运行 cmd.exe,并转至memcached所在文件夹。并安装memcached。


安装成功后无任何的提示可在服务中查看;


三.启动memcached服务

1、继续在cmd.exe 执行开启memcached命令 :

memcached.exe -d start

然后去任务管理器中进程查看memcached服务是否已经启动。

2、memcached基本参数设置
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

    3、memcached的停止与卸载命令

 memcached.exe -d stop memcached.exe -d uninstall

四.PHP安装memcache扩展

1、下载扩展:

下载地址:https://pan.baidu.com/s/1slVSjA9   密码:dvu9

(注意:PHP版本应与dll文件的版本相匹配。文件里的PHP5.4、PHP5.5、PHP5.6都亲测有用)  或者去http://pecl.php.net/package/memcache/3.0.8/windows选择相应的版本下载

2、将其中的php_memcache.dll 扩展文件拷贝到 php 的扩展目录中,例如:D:\wamp\bin\php\php5.5.12\ext

3、修改php.ini文件

  打开php的php.ini文件(我的地址是:D:\wamp\bin\php\php5.5.12\

  添加一行代码:

extension=php_memcache.dll


然后保存之后,重启服务器

检查是否加载成功:phpinfo中查看,假如如图所示,则成功


然后可以再项目中运行;

在thinkphp的使用:

(1)在config\config.php 配置中进行配置:

'DATA_CACHE_TYPE' => 'Memcache',//缓存方式
'MEMCACHE_HOST' => '127.0.0.1:11211',// 缓存服务器地址
'DATA_CACHE_TIME' => '3600',//缓存存在时间s

(2)在Thinkphp\conf\convention.php中进行配置;

'DATA_CACHE_TYPE'       =>  'Memcache',

(3)在控制器中调用进行缓存处理;(具体操作参照开发手册)





普通分类: