Memcached的安装和应用

Memcached的安装

1.安装libevent
libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用
select、epoll、kqueue等系统调用管理事件机制。memcached也是libevent
based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。
The
libevent API provides a mechanism to execute a callback function when a
specific event occurs on a file descriptor or after a timeout has been
reached. Furthermore, libevent also support callbacks due to signals or
regular timeouts.
libevent is meant to replace the event loop found
in event driven network servers. An application just needs to call
event_dispatch() and then add or remove events dynamically without
having to change the event loop.
安装Memcached前需要先安装libevent,下载地址:http://libevent.org/
[root@localhost home]# tar zxvf libevent-2.0.21-stable.tar.gz
[root@localhost home]# cd libevent-2.0.21-stable
[root@localhost libevent-2.0.21-stable]# ./configure
[root@localhost libevent-2.0.21-stable]#make && make install

2.安装Memcached
下载地址:http://memcached.org/
[root@bogon home]# tar zxvf memcached-1.4.15.tar.gz
[root@bogon home]# cd memcached-1.4.15
[root@bogon memcached-1.4.15]# ./configure
[root@bogon memcached-1.4.15]# make && make install
安装完成后,Memcached的默认安装目录是/usr/local/bin/memcached

3.启动Memcached
[root@bogon run]# /usr/local/bin/memcached -m 32m -p 11211 -d -u root -P /var/run/memcached.pid -c 256
启动时可能出现如下错误:
[root@bogon run]# /usr/local/bin/memcached -m 32m -p 11211 -d -u root -P /var/run/memcached.pid -c 256
/usr/local/bin/memcached:
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文件,解决办法是把/usr/local/lib
加入到/etc/ld.so.conf中,/etc/ld.so.conf里保存的是想要读入高速缓存当中的动态函数库所在的目录,过程如下:
[root@bogon run]# echo "/usr/local/lib">>/etc/ld.so.conf
[root@bogon run]# ldconfig    #利用ldconfig这个可执行文件将/etc/ld.so.conf的数据读入到高速缓存中,
[root@bogon script]# ldconfig -p|grep libevent-2.0.so.5    #ldconfig -p 查看libevent-2.0.so.5库已经被读入到高速缓存中了。
libevent-2.0.so.5 (libc6) => /usr/local/lib/libevent-2.0.so.5
启动过程参数说明:

-p:使用TCP端口。默认是11211.
-m:最大内存的大小。默认是64M。
-vv:以very vrebose模式启动,将调试信息和错误输出到控制台。
-d:做为守护进程在后台运行。
-c:最大运行的并发连接数,默认是1024,按照服务器的负载量来设定。
-P :设置保存Memcached的pid文件。
-l:监听的服务器IP地址,如果有多个地址。
-u:运行Memcached的用户,默认不能由root用户启动,所以当前用户为root时需要利用-u参数来指定。
通过/usr/local/bin/memcached -h命令可以显示所有可选项:
[root@bogon run]# /usr/local/bin/memcached -h
memcached 1.4.15
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 11211, 0 is off)
-s <file>    UNIX socket path to listen on (disables network support)
-a <mask>    access mask for UNIX socket, in octal (default: 0700)
-l <addr>    interface to listen on (default: INADDR_ANY, all addresses)
            <addr> may be specified as host:port. If you don't specify
            a port number, the value you specified with -p or -U is
            used. You may specify multiple addresses separated by comma
            or by using -l multiple times
-d            run as a daemon
-r            maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num>      max memory to use for items in megabytes (default: 64 MB)
-M            return error on memory exhausted (rather than removing items)
-c <num>      max simultaneous connections (default: 1024)
-k            lock down all paged memory.  Note that there is a
            limit on how much memory you may lock.  Trying to
            allocate more than that would fail, so be sure you
            set the limit correctly for the user you started
            the daemon with (not for -u <username> user;
            under sh this is done with 'ulimit -S -l NUM_KB').
-v            verbose (print errors/warnings while in event loop)
-vv          very verbose (also print client commands/reponses)
-vvv          extremely verbose (also print internal state transitions)
-h            print this help and exit
-i            print memcached and libevent license
-P <file>    save PID in <file>, only used with -d option
-f <factor>  chunk size growth factor (default: 1.25)
-n <bytes>    minimum space allocated for key+value+flags (default: 48)
-L            Try to use large memory pages (if available). Increasing
            the memory page size could reduce the number of TLB misses
            and improve the performance. In order to get large pages
            from the OS, memcached will allocate the total item-cache
            in one large chunk.
-D <char>    Use <char> as the delimiter between key prefixes and IDs.
            This is used for per-prefix stats reporting. The default is
            ":" (colon). If this option is specified, stats collection
            is turned on automatically; if not, then it may be turned on
            by sending the "stats detail on" command to the server.
-t <num>      number of threads to use (default: 4)
-R            Maximum number of requests per event, limits the number of
            requests process for a given connection to prevent
            starvation (default: 20)
-C            Disable use of CAS
-b            Set the backlog queue limit (default: 1024)
-B            Binding protocol - one of ascii, binary, or auto (default)
-I            Override the size of each slab page. Adjusts max item size
            (default: 1mb, min: 1k, max: 128m)
-o            Comma separated list of extended or experimental options
            - (EXPERIMENTAL) maxconns_fast: immediately close new
              connections if over maxconns limit
            - hashpower: An integer multiplier for how large the hash
              table should be. Can be grown at runtime if not big enough.
              Set this based on "STAT hash_power_level" before a
              restart.

4.关闭Memcached

关闭Memcached的命令如下:
[root@bogon script]# kill `cat /var/run/memcached.pid`  #注意是返单引号。

5.安装Memcache的PHP扩展

下载地址:http://pecl.php.net/package/memcache 我下载的是memcache-2.2.7.tgz稳定版
[root@bogon home]# tar zxvf memcache-2.2.7.tgz
[root@bogon home]# cd memcache-2.2.7
执行phpize扩展安装程序,假设phpzie的路径为/usr/local/php/bin/phpize,具体的路径得根据自己的环境修改。
/usr/local/php/bin/phpize

上一篇:[WPF 容易忽视的细节] —— x:Name与Name属性


下一篇:C++ 自赋值