Memcached is a high performance multithreaded event-based key/value cache store intended to be used in a distributed system.

Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

 

memcached 官网https://memcached.org

memcached 源码https://github.com/memcached/memcached

 

一般情况下,CentOS已经默认安装了libevent的二进制库,但是没有安装相应的开发所用的头文件。

所以,你可以使用如下命令来安装:

yum -y install libevent libevent-devel

下载 memcached:https://memcached.org,或直接下载最新 memcached-1.5.9.tar.gz

解压安装:

tar -xzvf memcached-1.5.9.tar.gz

cd memcached-1.5.9

sh autogen.sh 

./configure         // 推荐默认安装,命令路径为 /usr/local/bin/memcached

或指定安装路径

./configure --prefix=/usr/local/memcached     // 命令在指定路径里 /usr/local/memcached/bin/memcached

或执行libevent安装路径,例如:    

./configure --with-libevent=/usr/ --prefix=/usr/local/memcached

make && make install

备注:如果 libevent 不是安装在 /usr/ 目录下,那么需要把 libevent-1.4a.so.1  拷贝/链接到  /usr/lib 中,否则memcached在配置的时候会报找不到libevent。

 

启动

/usr/local/bin/memcached -l 127.0.0.1 -d -p 11211 -u nobody -m 1024M

memcached -u root -l 127.0.0.1 -p 11211 -m 64M -c 256 -P /tmp/memcached.pid -d

-d 表示用 daemon 方式的后台启动

-l 表示监听服务器ip地址,可以有多个ip地址,例如在本机 127.0.0.1

-p 表示指定端口号,默认运行在11211端口上

-u 表示运行用户为 nobody

-m 表示分配的内存,单位是MB,例如为其分配1024MB

-c 表示最大运行的并发连接数,默认是1024

-P 表示设置保存Memcache的pid文件

 

测试 key-value

可以使用telnet连接到192.168.10.60的11211端口

telnet 用法帮助:

# telnet help

usage: telnet [-l user] [-a] host-name [port]

telnet 退出命令:

quit

Ctrl + ] 进入 telnet 控制台,然后 quit

 

telnet 连接本机命令:

telnet 127.0.0.1 11211

连接成功以后,先向memcached中添加一个key-value对

# telnet 127.0.0.1 11211 
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set foo 0 0 3
bar
STORED
get foo
VALUE foo 0 3
bar
END
quit
Connection closed by foreign host.

如果能看到类似的输出,则证明memcached已经正确配置并启动成功了。

 

memcached set 命令

上面测试示例用到了命令:

set foo 0 0 3

此命令是什么意思呢?

set 命令的基本语法格式如下:

set key flags exptime bytes [noreply] 
value 

参数说明如下:

  • key:键值 key-value 结构中的 key,用于查找缓存值,例如:foo
  • flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
  • exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
  • bytes:在缓存中存储的字节数
  • noreply(可选): 该参数告知服务器不需要返回数据
  • value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)

实例

以下实例中我们设置:

  • key → foo
  • flag → 0
  • exptime → 0 (永远不过期)
  • bytes → 3 (数据存储的字节数为3个字节)
  • value → bar (超过3个字节则报错,例如mimvp)

示例

# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set foo 0 0 3
bar
STORED
get foo
VALUE foo 0 3
bar
END

set foo 0 0 3
mimvp
CLIENT_ERROR bad data chunk
ERROR

 

memcached 启动脚本

vim /etc/init.d/memcached

#!/bin/sh
##
## memcached:    MemCached Daemon
#
# chkconfig:    - 90 25
# description:  MemCached Daemon
# author:  www.mimvp.com
#
# /usr/local/bin/memcached -l 127.0.0.1 -d -p 11211 -u nobody -m 1024
#
# Source function library.

MEMCACHED="/usr/local/bin/memcached"
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network

#[ ${NETWORKING} = "no" ] && exit 0
#[ -r /etc/sysconfig/dund ] || exit 0
#. /etc/sysconfig/dund
#[ -z "$DUNDARGS" ] && exit 0

start()
{
    echo -n $"Starting memcached: "
    daemon $MEMCACHED -u nobody -d -m 1024 -l 127.0.0.1 -p 11211
    echo
}
stop()
{
    echo -n $"Shutting down memcached: "
    killproc memcached
    echo
}

[ -f $MEMCACHED ] || exit 1
# See how we were called.
case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart)
    stop
    sleep 3
    start
    ;;
    *)
    echo $"Usage: $0 {start|stop|restart}"
    exit 1
esac
exit 0

添加可执行权限:

chmod  +x  /etc/init.d/memcached

 

增加开机自启动

# chmod 755 /etc/init.d/memcached 
# chkconfig --add memcached 
# chkconfig --level 345 memcached on 
# chkconfig --list memcached

[root@mimvp-hz ~]# chkconfig --list memcached
memcached              0:off    1:off    2:on    3:on    4:on    5:on    6:off

 

 

安装php-memcache扩展

git 源码:https://github.com/php-memcached-dev/php-memcached

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

直接下载:http://pecl.php.net/get/memcache-2.2.4.tgz

# 解压安装
$ tar -zxvf memcache-2.2.4.tgz
$ cd memcache-2.2.4
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
$ make

$ make test
$ mkdir /usr/local/php/extensions/
$ cp modules/memcache.so /usr/local/php/extensions/
# 在php.ini中加入扩展
[vi /usr/local/lib/php.ini]
extension_dir = "/usr/local/php/extensions/"
extension     = "memcache.so"

重新启动apache即可

 

 测试

下载: memcache.php

<?php
    $mc = new Memcache;
    $mc->connect("127.0.0.1",11211);
    $item = $mc->get('item');
    if(!is_array($item)){
        echo "Add item to memcache";
        $mc->add('item',array('item'));
    }
    $item = $mc->get('item');
    var_dump($item);
?>

 

 

参考推荐

Linux Memcached 安装

centos 下安装memcache配置

MemCached安装配置

Linux php7.0 安装redis和PHP扩展

Linux php7安装mongoDB和memcached扩展

Redis,MemCached,MongoDB概述

WordPress 启用Memcached内存缓存