zoukankan      html  css  js  c++  java
  • Memcached安装以及PHP的调用

    原文链接:http://blog.csdn.net/21aspnet/article/details/6596507

    一:安装libevent

    由于memcached安装时,需要使用libevent类库,所以先安装libevent

    1.下载

    #wget   http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz

    2.解压缩

    #tar xzfv  libevent-2.0.12-stable.tar.gz

    3.进入目录

    #cd libevent-2.0.12-stable

    4. 编译,安装
    ./configure
    # make
    # make install
     注:默认安装到/usr/local/lib/目录

    二:安装Memcached

    http://memcached.org/ 是Memcached的官方网站

    1.下载

    # wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz

    2.解压缩

    #tar xzfv  memcached-1.4.5.tar.gz 

    3.进入目录

    #cd memcached-1.4.5 

    4. 编译,安装
    ./configure --prefix=/local/memcached
    make
    make install



    安装完成后,会在 /local/memcached 出现 bin和share目录
    进行 bin目录,启动 memcache
    方法如下:
    ./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
    此时,会报一个异常
     error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

    原因是找不到libevent-2.0.so.5类库,解决办法如下:

    使用LD_DEBUG=help ./memcached -v来确定 加载的类库路径,方法如下:
    LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less

    出现(END)可以直接输入p退出

    #ln -s /usr/local/lib/libevent-2.0.so.5 /lib/libevent-2.0.so.5

    现在可以正常启动memcached了
    ./memcached -d -u nobody -m 512 127.0.0.1 -p 11211

    到这里,看到memcached已经启动,说明安装成功。

    三:安装memcache PHP模块

     

    #wget http://pecl.php.net/get/memcache-2.2.4.tgz

    # tar zxvf memcache-2.2.4.tgz
    # cd memcache-2.2.4

    找phpize

    #whereis phpize

    本机是/usr/bin/phpize

    # /usr/bin/phpize
    # ./configure --with-php-config=/usr/bin/php-config
    # make
    # make install

    在php.ini文件添加一行

    php.ini在/etc下
    extension=memcache.so
    重启httpd
    #service httpd restart
    php里使用phpinfo()看到如下信息说明memcached扩展才算安装好!

    四:PHP调用memcached
    自己写一个PHP程序测试一下
    1. <?php  
    2. $memcache = new Memcache; //创建一个memcache对象  
    3. $memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器  
    4. $memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test  
    5. $get_value = $memcache->get('key'); //从内存中取出key的值  
    6. echo $get_value;  
    7. ?>  
     
    常用操作
    1. <?php  
    2. //连接Memcache  
    3. $mem = new Memcache;  
    4. $mem->connect("localhost", 11211);  
    5. //保存数据  
    6. $mem->set('key1', 'This is first value', 0, 60);  
    7. $val = $mem->get('key1');  
    8. echo "Get key1 value: " . $val ."<br>";  
    9. //替换数据  
    10. $mem->replace('key1', 'This is replace value', 0, 60);  
    11. $val = $mem->get('key1');  
    12. echo "Get key1 value: " . $val . "<br>";  
    13. //保存数组数据  
    14. $arr = array('aaa', 'bbb', 'ccc', 'ddd');  
    15. $mem->set('key2', $arr, 0, 60);  
    16. $val2 = $mem->get('key2');  
    17. echo "Get key2 value: ";  
    18. print_r($val2);  
    19. echo "<br>";  
    20. //删除数据  
    21. $mem->delete('key1');  
    22. $val = $mem->get('key1');  
    23. echo "Get key1 value: " . $val . "<br>";  
    24. //清除所有数据  
    25. $mem->flush();  
    26. $val2 = $mem->get('key2');  
    27. echo "Get key2 value: ";  
    28. print_r($val2);  
    29. echo "<br>";  
    30. //关闭连接  
    31. $mem->close();  
    32. ?>  

    在一台或者多台机器启用一个或者多个进程,这里是在一台机器启
    用两个进程,使用两个端口:
    #./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
    #./memcached -d -u nobody -m 512 127.0.0.1 -p 11212
    1. <?php  
    2. //连接Memcache  
    3. $mem = new Memcache;  
    4. $mem->addServer("localhost", 11211);  
    5. $mem->addServer("localhost", 11212);  
    6. //保存数据  
    7. $mem->set('key1', 'This is first value', 0, 60);  
    8. $val = $mem->get('key1');  
    9. echo "Get key1 value: " . $val ."<br>";  
    10. //保存数组数据  
    11. $arr = array('aaa', 'bbb', 'ccc', 'ddd');  
    12. $mem->set('key2', $arr, 0, 60);  
    13. $val2 = $mem->get('key2');  
    14. echo "Get key2 value: ";  
    15. print_r($val2);  
    16. echo "<br>";  
    17. //删除数据  
    18. $mem->delete('key1');  
    19. $val = $mem->get('key1');  
    20. echo "Get key1 value: " . $val . "<br>";  
    21. //关闭连接  
    22. $mem->close();  
    23. ?>  

    五:Memcached一些特性和限制
    • 在 Memcached 中可以保存的item数据量是没有限制的,只有内存足够
    • Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程
    • 最大30天的数据过期时间, 设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA
    60*60*24*30 控制
    • 最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250 控制
    • 单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576 进行控制,
    它是默认的slab大小
    • 最大同时连接数是200,通过 conn_init()中的freetotal 进行控制,最大软连接数是1024,通过
    settings.maxconns=1024 进行控制
    • 跟空间占用相关的参数:settings.factor=1.25, settings.chunk_size=48, 影响slab的数据占用和步进方式
     
    查看Memcached内部工作状态
    访问Memcached:telnet 主机名 端口号
    查看总状态:stats
    查看某项状态:stats curr_connections
    禁止LRU
    有些情况下LRU机制反倒会造成麻烦。memcached启动时通过“-M”参数可以禁止LRU,
    如下所示:
    $ memcached -M -m 1024
    启动时必须注意的是,小写的“-m”选项是用来指定最大内存大小的。不指定具体数值则
    使用默认值64MB。
    指定“-M”参数启动后,内存用尽时memcached会返回错误。话说回来,memcached毕
    竟不是存储器,而是缓存,所以推荐使用LRU。
     
    Memcached使用线程模式工作
    在安装的时候必须打开:./configure --enable-threads
    安装完之后,启动的时候看看帮助信息有没有这条:
    -t <num> number of threads to use, default 4
    如果存在该选项,说明已经支持了线程,就可以在启动的时候使用 -t 选项来启动多线程
    然后启动的时候必须加上你需要支持的线程数量:
    /usr/local/memcache/bin/memcached -t 1024
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    网上流行的PHP安装Memcached第二种方法安装和配置

    需要把对应版本改为最新即可

    1、安装Memcached

    # tar vxzf memcached-1.1.12.tar.gz
    # cd memcached-1.1.12
    # ./configure --prefix=/usr/local/memcached
    # make
    # make install

    安装完之后要启动服务

    # cd /usr/local/memcached/bin
    # ./memcached -d -m 50 -p 11211 -u root

    参数说明 -m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行

    2、安装memcache PHP模块

    # tar vxzf memcache-1.5.tgz
    # cd memcache-1.5
    # /usr/local/php/bin/phpize
    //注意下面不一样
    # ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
    # make
    # make install

    安装完后会有类似这样的提示:

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

    把这个记住,然后修改php.ini,把

    extension_dir = "./"

    修改为

    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"

    并添加一行

    extension=memcache.so
  • 相关阅读:
    webpack基础
    LeetCode232. 用栈实现队列做题笔记
    mysql 时间加减一个月
    leetcode 1381. 设计一个支持增量操作的栈 思路与算法
    LeetCode 141. 环形链表 做题笔记
    leetcode 707. 设计链表 做题笔记
    leetcode 876. 链表的中间结点 做题笔记
    leetcode 143. 重排链表 做题笔记
    leetcode 1365. 有多少小于当前数字的数字 做题笔记
    LeetCode1360. 日期之间隔几天 做题笔记
  • 原文地址:https://www.cnblogs.com/myphper/p/4105563.html
Copyright © 2011-2022 走看看