php5.3安装libmemcached 扩展方法与简单实例

基于libmemcached的php memcache client有很多优势

•hash一致性存储
•multi get/set
•自动把key hash 为int,避开了memcache key字符串默认小于255Byte的限制
好久没有配置服务器,一直以为libmemcached的php memcached 已经纳入基本安装包了,到头来还需要自己编译.整个安装过程很多暗坑,尝试了几次才成功

安装分两步

•安装libmemcached,目标是so和header文件
•安装memcachedphp extensions
libmemcaced 分为两大版本0.x和1.x, 1.x的版本从2011-09-28开始,编译很麻烦,需要gcc4.0以上的专门配置,compile无比慢. 0.x版本就简单很多,最高版本是0.53,所以选择安装0.53

极品总是成对出现,php的memcahed也从2.1.0开始,要求libmemcached 必须是1.0.x版本

libmemcaced我用的0.53,那php-memcahed 就选择2.0.0. 开源软件的版本维护是一团烂帐

安装libmemcached

 代码如下 复制代码
    wget https://launchpad.net/libmemcached/1.0/0.53/+download/libmemcached-0.53.tar.gz
    tar xvfz libmemcached-0.53.tar.gz
    cd libmemcached-0.53
    ./configure --prefix=/opt/libmemcached
    make && make install

安装php扩展

 代码如下 复制代码

    wget http://pecl.php.net/get/memcached-2.0.0.tgz
    tar zvxf memcached-2.0.0.tgz
    cd memcached-2.0.0/
    ./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/opt/libmemcached/
    make && make install

make install 是 把memcached.so 安装到 ${php install dir}/extensions/no-debug-non-zts-20090626/,这个目录随着php的版本不同而不同

最后一步,修改php.ini,加上 extension=memcached.so

与面我们己安装好了来看看简单的实例

 代码如下 复制代码

#include <iostream>
 2 #include <string>
 3 #include <libmemcached/memcached.h>
 4
 5 using namespace std;
 6
 7 int main(int argc,char *argv[])
 8 {
 9     //connect server
10     memcached_st *memc;
11     memcached_return rc;
12     memcached_server_st *server;
13     time_t expiration;
14     uint32_t  flags;
15
16     memc = memcached_create(NULL);
17     server = memcached_server_list_append(NULL,"localhost",11211,&rc);
18     rc=memcached_server_push(memc,server);
19     memcached_server_list_free(server);
20
21     string key = "key";
22     string value = "value";
23     size_t value_length = value.length();
24     size_t key_length = key.length();
25
26
27     //Save data
28     rc=memcached_set(memc,key.c_str(),key.length(),value.c_str(),value.length(),expiration,flags);
29     if(rc==MEMCACHED_SUCCESS)
30     {
31         cout<<"Save data:"<<value<<" sucessful!"<<endl;
32     }
33
34     //Get data
35     char* result = memcached_get(memc,key.c_str(),key_length,&value_length,&flags,&rc);
36     if(rc == MEMCACHED_SUCCESS)
37     {
38         cout<<"Get value:"<<result<<" sucessful!"<<endl;
39     }
40
41     //Delete data
42     rc=memcached_delete(memc,key.c_str(),key_length,expiration);
43     if(rc==MEMCACHED_SUCCESS)
44     {
45         cout<<"Delete key:"<<key<<" sucessful!"<<endl;
46     }
47
48     //free
49     memcached_free(memc);
50     return 0;
51 }
52
53

编译:g++ -o testmemcached testmemcached.cpp -lmemcached
运行:./testmemcached
结果:Save data:value sucessful!
      Get value:value sucessful!
      Delete key:key sucessful!

注意事项

需要注意的是, libmemcached 不是 libmemcache ,它们是两个不同的客户端库,前者现在的开发比较活跃,后者已经有很长时间没有更新了。

memcached 是一个高性能、分布式的内存对象缓存系统,通过内存的数据缓存来降低对数据库的访问,从而提高动态内容应用网站的速度。memcached 官方开发释放出来的,只是应用的服务器端程序,它发布了服务器端的连接读写协议,客户端的实现,则根据动态内容应用网站使用的动态脚本的不同,而有多种,具体列表,可查看官方网站。

时间: 2024-08-07 14:42:10

php5.3安装libmemcached 扩展方法与简单实例的相关文章

php5.3安装libmemcached扩展的教程

libmemcached 是一个 memcached 的库,客户端库,C 和 C++ 语言实现的客户端库,具有低内存占用率.线程安全.并提供对memcached功能的全面支持.它还采用 多种命令行工具: memcat , memflush , memrm , memstat ,并memslap (负载代).程序库一直在设计,让不同的散列方法对密钥,分割的钥匙,并使用统一的散列分配 hash一致性存储 multi get/set 自动把key hash 为int,避开了memcache key字符

java反射_改变private中的变量及方法的简单实例_java

java反射_改变private中的变量及方法的简单实例 class DemoTest{ private String name="123"; public getName(){ system.out.println("public getName " + name); return name; } private getName2(){ system.out.println("private getName2 " + name); return

java中利用反射调用另一类的private方法的简单实例_java

我们知道,Java应用程序不能访问持久化类的private方法,但Hibernate没有这个限制,它能够访问各种级别的方法,如private, default, protected, public. Hibernate是如何实现该功能的呢?答案是利用JAVA的反射机制,如下:  import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectDemo

linux中php如何安装CURL扩展方法示例教程

  如果php已经在系统编译好,后来又需要添加新的扩展. 一种方式就是重新完全编译php,另一种方式就是单独编译扩展库,以extension的形式扩展. 下面以安装curl扩展为例: 1.下载curl安装包.(我的php是4.4.4的,下载最新的curl 7.16 不能使用,最后下载7.14的才可以,所以要注意一下版本问题) 代码如下: ./configure make php要求curl的目录要有include和lib目录,并且include下要有easy.h 和curl.h两个文件,lib下

linux中php如何安装CURL扩展方法

  如果php已经在系统编译好,后来又需要添加新的扩展. 一种方式就是重新完全编译php,另一种方式就是单独编译扩展库,以extension的形式扩展. 下面以安装curl扩展为例: 1.下载curl安装包.(我的php是4.4.4的,下载最新的curl 7.16 不能使用,最后下载7.14的才可以,所以要注意一下版本问题) ./configure make php要求curl的目录要有include和lib目录,并且include下要有easy.h 和curl.h两个文件,lib下要有libc

Centos6.5下PHP5.3安装ffmpeg扩展的方法

安装步骤 安装必须的环境yasm     wget http://www.tortall.net/projects/yasm/releases/yasm-0.7.0.tar.gz     tar zxvf yasm-0.7.0.tar.gz     cd yasm-0.7.0     ./configure     make && make install 安装ffmpeg     svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

Windows下Nginx+PHP5的安装与配置方法_nginx

以下是我在 Windows 2003 安装中 Nginx 和 PHP5.2 的步骤,但windows版本的nginx性能要比Linux/Uninx版本的Nginx差太多. 安装 PHP5首先,从 http://www.php.net/downloads.php 下 载最新的 PHP5.2.9-2 Windows 版本,解压至 C:\php,把压缩包中的 php.ini-recommended,更名为 php.ini,然后打开修改几个选项: error_reporting = E_ALLdispl

Windows下Nginx + PHP5 的安装与配置方法_nginx

安装 PHP5 首先,从 http://www.php.net/downloads.php 下载最新的 PHP 5.3 Windows 版本,解压至 C:\php5,把压缩包中的 php.ini-recommended,更名为 php.ini,然后打开修改几个选项: 复制代码 代码如下: error_reporting = E_ALL display_errors = On extension_dir = "C:\php5\ext" ; 动态扩展,可以根据需要去掉 extension

CentOs中Python 2.7.3安装bz2扩展方法

在CentOS系统中安装Node.js,遇到如下错误  代码如下 复制代码 ImportError: No module named bz2:   File "/disk/src/node-v0.6.12/deps/v8/SConstruct", line 37:     import js2c, utils   File "/disk/src/node-v0.6.12/deps/v8/tools/js2c.py", line 36:     import bz2