zoukankan      html  css  js  c++  java
  • Linux下的Memcache安装

    转载:

    http://www.ccvita.com/257.html

    最近在研究怎么让Discuz!去应用Memcache去做一些事情,记录下Memcache安装的过程。

    Linux下Memcache服务器端的安装
    服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。
    下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
    另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了libevent,可以不用安装)
    官网:http://www.monkey.org/~provos/libevent/
    下载:http://www.monkey.org/~provos/libevent-1.3.tar.gz

    用wget指令直接下载这两个东西.下载回源文件后。
    1.先安装libevent。这个东西在配置时需要指定一个安装路径,即./configure --prefix=/usr;然后make;然后make install;
    2.再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure --with-libevent=/usr;然后make;然后make install;
    这样就完成了Linux下Memcache服务器端的安装。详细的方法如下:

    1.分别把memcached和libevent下载回来,放到 /tmp 目录下:
    # cd /tmp
    # wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
    # wget http://www.monkey.org/~provos/libevent-1.2.tar.gz

    2.先安装libevent:
    # tar zxvf libevent-1.2.tar.gz
    # cd libevent-1.2
    # ./configure --prefix=/usr
    # make
    # make install

    3.测试libevent是否安装成功:
    # ls -al /usr/lib | grep libevent
    lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
    -rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
    -rw-r--r-- 1 root root 454156 11?? 12 17:38 libevent.a
    -rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
    lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
    还不错,都安装上了。

    4.安装memcached,同时需要安装中指定libevent的安装位置:
    # cd /tmp
    # tar zxvf memcached-1.2.0.tar.gz
    # cd memcached-1.2.0
    # ./configure --with-libevent=/usr
    # make
    # make install
    如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
    安装完成后会把memcached放到 /usr/local/bin/memcached ,

    5.测试是否成功安装memcached:
    # ls -al /usr/local/bin/mem*
    -rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
    -rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug

    安装Memcache的PHP扩展
    1.在http://pecl.php.net/package/memcache 选择相应想要下载的memcache版本。
    2.安装PHP的memcache扩展

    tar vxzf memcache-2.2.1.tgz
    cd memcache-2.2.1
    /usr/local/php/bin/phpize
    ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
    make
    make install


    3.上述安装完后会有类似这样的提示:

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


    4.把php.ini中的extension_dir = "./"修改为

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


    5.添加一行来载入memcache扩展:extension=memcache.so

    memcached的基本设置
    1.启动Memcache的服务器端:
    # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid

    -d选项是启动一个守护进程,
    -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
    -u是运行Memcache的用户,我这里是root,
    -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
    -p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
    -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
    -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

    2.如果要结束Memcache进程,执行:

    # kill `cat /tmp/memcached.pid`


    也可以启动多个守护进程,不过端口不能重复。

    3.重启apache,service httpd restart

    Memcache环境测试
    运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
    < ?php
    $mem = new Memcache;
    $mem->connect("127.0.0.1", 11211);
    $mem->set('key', 'This is a test!', 0, 60);
    $val = $mem->get('key');
    echo $val;
    ?>

    参考资料
    对Memcached有疑问的朋友可以参考下列文章:
    Linux下的Memcache安装:http://www.ccvita.com/257.html
    Windows下的Memcache安装:http://www.ccvita.com/258.html
    Memcache基础教程:http://www.ccvita.com/259.html
    Discuz!的Memcache缓存实现:http://www.ccvita.com/261.html
    Memcache协议中文版:http://www.ccvita.com/306.html
    Memcache分布式部署方案:http://www.ccvita.com/395.html

    Tags: Linux, Memcache

     

    错误问题解决:

    memcached: error while loading shared libraries: libevent-2.0.so.5: cannot o

    http://blog.csdn.net/keda8997110/article/details/8767606

    memcached基本选项

    -p 端口   监听tcp端口
    -d    以守护进程方式运行memcached
    -u username  以username运行
    -m 《num》  最大的内存使用,单位是MB ,缺省是64MB
    -c <num>  软连接数量,缺省是1024
    -v    输出警告和错误信息
    -vv   打印客户端的请求和返回信息

    检查memcached是否正常运行
    #ps aux | grep memcached

    #telnet localhost 11211
    ....
    stats
    ...
    会显示memcached的基本信息

     

    如果启动时出现“memcached: error while loading shared libraries:libevent-2.0.so.5: cannot

    open shared object file: No such file or directory”之类的信息,表示memcached 找不到

    libevent 的位置
    所以,请先使用whereis libevent 得到位置,然后连接到memcached 所寻找的路径
    首先查看,libevent 在哪里
    # whereis libevent
    libevent: /usr/local/lib/libevent.la /usr/local/lib/libevent.so /usr/local/lib/libevent.a
    然后,再看memcached 从哪里找它
    # LD_DEBUG=libs memcached -v 2>&1 > /dev/null | less
    可以看到:是/usr/lib/libevent-2.0.so.5,所以,创建软链
    [root@localhost tools]# ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
    再次启动

     

    关闭memcached :pkill memcached

     

    通过telnet连接查看memcache服务器

    http://blog.csdn.net/clh604/article/details/16342755

    memcache作为一款优秀的进程外缓存,常常被运用于高并发系统架构中。这里主要谈谈怎么通过telnet工具,查看memcache运行状况并对其key进行管理维护。假设memcache安装目录:/usr/local/memcached

              
    1、启动memcache

    [plain] view plaincopy
     
     
    1. [root@localhost ~]# /usr/local/memcached/bin/memcached -d -m 512  -u root -l 192.168.119.70 -p 12000 -c 512 -P /usr/local/memcached/memcached.pid  

    启动参数详解
     -d:以守护进程方式启动。如果该参数没有指定,当按ctrl+c命令结束,memcache自动关闭
     -m:分配给memcache使用的最大内存数 单位是m,默认是64m
     -u: 指定运行memcache的用户
     -l: 指定监听的ip地址
     -p: 指定监听的tcp端口号,可以通过-u指定udp端口.默认是11211
     -c: 最大并发连接数
     -P: 报错进程id的文件
     memcache 启动之后,我们就可以通过telnet连接memcache,对其进行简单操作管理。

    2、telnet连接memcache

    [plain] view plaincopy
     
     
    1. [root@localhost ~]# telnet 192.168.119.70 12000   
    2. Trying 192.168.119.70...  
    3. Connected to 192.168.119.70 (192.168.119.70).  
    4. Escape character is '^]'.   

     连接成功之后,即可对memcache进行操作管理了,常用的命令有:

    Ⅰ、添加修改

            命令格式:<command> <key> <flags> <exptime> <bytes> <data block>

           <command>:add, set或 replace

           <key> :缓存的名字

           <flag>:16位无符号整数,和key要存储的数据一起存储,并在程序get缓存时,返回。

          <exptime>:过去时间,0 表示永远不过期,如果非零,表示unix时间或距此秒数

           <bytes>:存储数据的字节数

            : 表示换行回车

            命令结果:

                    STORED :表示成功

                    NOT_STORED : 表示失败 

    a)、添加缓存

    [plain] view plaincopy
     
     
    1. add id 1 0 4  
    2. 1234  
    3. STORED  

             如果key已经存在,则会添加失败。

    b)、修改缓存

    [plain] view plaincopy
     
     
    1. replace id 1 0 4  
    2. 3456  
    3. STORED  

         key存在时,成功;不存在时,失败。

    c)、设置缓存

    [plain] view plaincopy
     
     
    1. set id 1 0 4  
    2. 2345  
    3. STORED  

        key不存在时,添加【add】;已存在时,替换【replace】。

    Ⅱ、读取

           命令格式:get <key>+

           <key>+:表示一个或多个key,多个key时,用空格隔开

    a)、读取单个key的缓存

    [plain] view plaincopy
     
     
    1. get id  
    2. VALUE id 1 4  
    3. 1234  
    4. END  

     b)、读取多个key的缓存

    [plain] view plaincopy
     
     
    1. get id name  
    2. VALUE id 1 4  
    3. 3456  
    4. VALUE name 1 3  
    5. jim  
    6. END  

    Ⅲ、删除

    命令格式:delete <key>

    <key>:要删除的key

    删除id

    [plain] view plaincopy
     
     
    1. delete id   
    2. DELETED  

    Ⅳ、清空所有缓存

    命令格式:flush_all

    [plain] view plaincopy
     
     
    1. flush_all  
    2. OK  

    Ⅴ、查看缓存服务器状态

    命令:stats

    [plain] view plaincopy
     
     
    1. stats  
    2. STAT pid 2711     //进程id  
    3. STAT uptime 2453  //总的运行时间,单位描述  
    4. STAT time 1344856333  //当前时间  
    5. STAT version 1.4.0 //版本  
    6. STAT pointer_size 32    //服务器指针位数,一般32位操作系统是32  
    7. STAT rusage_user 0.002999  //进程的累计用户时间   
    8. STAT rusage_system 1.277805  //进程的累计系统事件  
    9. STAT curr_connections 1  //当前连接数  
    10. STAT total_connections 11  //服务器启动后,总连接数  
    11. STAT connection_structures 11  //连接结构的数量  
    12. STAT cmd_get 17   //总获取次数  
    13. STAT cmd_set 1  //总写入次数  
    14. STAT cmd_flush 1   //总的的清空次数  
    15. STAT get_hits 1  //总的命中次数  
    16. STAT get_misses 7   //获取没有命中次数  
    17. STAT delete_misses //删除没有命中次数  
    18. STAT delete_hits 4   //删除命中次数  
    19. STAT incr_misses //递增操作没有命中次数   
    20. STAT incr_hits //递增操作命中次数  
    21. STAT decr_misses //递减操作没有命中的次数  
    22. STAT decr_hits //递减操作命中的次数  
    23. STAT cas_misses //cas设置没有命中次数  
    24. STAT cas_hits //cas命中次数  
    25. STAT cas_badval //cas操作找到key,但版本过期,没有设置成功  
    26. STAT bytes_read 455    //总共获取数据量  
    27. STAT bytes_written 1175  //总共写入数据量  
    28. STAT limit_maxbytes 1048576  //最大允许使用内存,单位字节  
    29. STAT accepting_conns 1      
    30. STAT listen_disabled_num 0  
    31. STAT threads 5   //当前线程数  
    32. STAT conn_yields 0  
    33. STAT bytes 56      //已用缓存空间  
    34. STAT curr_items 1  //当前缓存的keyvalue数  
    35. STAT total_items 7 //总共缓存的keyvalue数,包括过期删除的  
    36. STAT evictions //通过删除keyvalue,释放内存次数  
    37. END  

    Ⅵ、打印版本

    命令:version

    [plain] view plaincopy
     
     
    1. version  
    2. VERSION 1.4.0  

    Ⅶ、打印内存信息

    命令:stats slabs

    [plain] view plaincopy
     
     
    1. stats slabs  
    2. STAT 1:chunk_size 80  
    3. STAT 1:chunks_per_page 13107  
    4. STAT 1:total_pages 1  
    5. STAT 1:total_chunks 13107  
    6. STAT 1:used_chunks 1  
    7. STAT 1:free_chunks 1  
    8. STAT 1:free_chunks_end 13105  
    9. STAT 1:get_hits 10  
    10. STAT 1:cmd_set 10  
    11. STAT 1:delete_hits 4  
    12. STAT 1:incr_hits 0  
    13. STAT 1:decr_hits 0  
    14. STAT 1:cas_hits 0  
    15. STAT 1:cas_badval 0  
    16. STAT active_slabs 1  
    17. STAT total_malloced 1048560  
    18. END  

    3、退出telnet 

    [plain] view plaincopy
     
     
    1. quit  
     
    0

    CentOS安装telnet

    http://jingyan.baidu.com/article/3c48dd34709e70e10be35835.html

    电脑软件

    名称:CentOS telnet
    大小:10MB|类别:音频媒体|语言:中文
    应用平台:Linux-CentOS

    1.检查linux版本

        cat /etc/issue

    2.检查是否已经安装telnet

        rpm -qa | grep telnet

        上面的显示是已经安装,就不需要再安装了,如果没有,接着下一步吧。

    3.安装telnet及telnet-server,注意,需要root权限来安装。

        yum install telnet

        yum install telnet-server

        等待一会会提示是否安装,输入y然后回车,一会就装好了。

    4.因为装好telnet服务之后,默认是不开启服务的,下面我们需要修改文件来开启服务。

        vi /etc/xinetd.d/telnet

        修改 disable = yes 为 disable = no 

        :wq!存储——别告诉我你不懂的用vi...如果真的这样,推荐你再看看我的安装使用vi的经验!

    5.需要激活xinetd服务

        service xinetd restart

        我在使用中第一次有提示错误,第二次运行就没事了:)

    6.需要测试telnet是否成功开启

        telnet localhost

        如果前面的操作都没问题,输入用户名密码能登录成功。

    7.当你使用其他机器远程telnet的时候,如果不成功,那么很有可能是防火墙的问题,下面我们来修改防火墙的设置

        首先,使用netstat –tunlp查看是否23端口被防火墙封掉了:

        

        再使用iptables修改设置,使用service iptables save保存设置,然后service iptables restart重启防火墙。搞定!

    祝你好运!

    Memcache 查看列出所有key方法

    http://www.ttlsa.com/memcache/memcache-list-all-keys/

    今天在做一个Memcache的session测试,但是在测试的过程中,发现Memcache没有一个比较简单的方法可以直接象redis那样keys *列出所有的Session key,并根据key get对应的session内容,于是,我开始查找资料,翻出来的大部分是一些memcache常用命令等,但是对列出key的办法,讲解却不多,于是来到google,找到了一个国外的资料

    具体的内容我套用我的测试环境中,操作如下

    1. cmd上登录memcache

    2. 列出所有keys

    3. 通过itemid获取key

    接下来基于列出的items id,本例中为7,第2个参数为列出的长度,0为全部列出

    4. 通过get获取key值

    上面的stats cachedump命令列出了我的session key,接下来就用get命令查找对应的session值

    5. 参考地址

    参考地址:http://www.darkcoding.net/software/memcached-list-all-keys/

  • 相关阅读:
    利用Spark-mllab进行聚类,分类,回归分析的代码实现(python)
    c#项目返回文件案例
    设计模式 —— 组合模式
    设计模式 —— 备忘录
    设计模式 ——状态模式
    设计模式 —— 中介者模式
    设计模式 —— 适配器
    设计模式 —— 代理模式
    设计模式 ——门面模式
    设计模式 —— 享元模式
  • 原文地址:https://www.cnblogs.com/ihuning/p/5170987.html
Copyright © 2011-2022 走看看