Memcached是老牌内存缓存工具,不过版本有点老,大部分场景已经转向使用redis。

优点是:结构简单,能使用多核,有插件适用很多数据库场景。

缺点是:需要第三方支持才能有高可用和设置用户名密码。

安装

Memcached下载地址:

https://www.memcached.org/files/memcached-1.6.19.tar.gz

安装依赖库:

yum install -y libevent-devel gcc gcc-g++

创建用户名:

groupadd memcached && useradd -s /sbin/nologin -d /dev/null -M -g memcached memcached

安装步骤:

#解压包
tar xf memcached-1.6.19.tar.gz
#进入编译包
cd memcached-1.6.19/
#开始编译安装,指定安装文件夹
./configure --prefix=/usr/local/memcahced/ && make && make install

相当简单,然后启动

#启动memcache,指定端口和内存
/usr/local/memcahced/bin/memcached -d -u root -c 5000 -l 10.230.27.104 -p 11211 -m 2048

参数说明:

#进程与连接设置:

-d 以守护进程(daemon)方式运行服务

-u 指定运行Memcached的用户,如果当前用户为root,需要使用此参数指定用户

-l 指定Memcached进程监听的服务器IP地址,可以不设置此参数, 如果服务器有多块网卡,可用-l指定监听的某个网卡上.

-p (小写)指定Memcached服务监听TCP端口号。默认为11211

-P (大写)设置保存Memcached的pid文件($$),保存PID到指定文件

#内存相关设置:

-m 指定Memcached服务可以缓存数据的最大内存,默认为64MB,如果不带单位,默认就是MB.

-M Memcached服务内存不够时禁止LRU,如果内存满了会报错

-n 为key+value——flags分配的最小内存空间,默认为48字节

-f chunk size增长因子,默认为1.25

-L 启用大内存页,可以降低内存浪费,改进性能,视图使用最多的内存空间

#并发连接设置:

-c 最大的并发连接数,默认是1024

-t 线程数,默认4.由于Memcached采用的是NIO,所以太多线程作用不大,一般用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效,而linux对线程支持是非常有限的,所以不用关心了

-s 如果只在本地通信那么可以将其监听在某个套接字上,比如mysql.scok 能够利用共享内存方式进行通信的

-S 启用SSL认证功能

-r 设定最大内核大小限制

-R 每个event最大请求数,默认是20

-C 禁用CAS(可以禁止版本计数,减少开销)

#测试参数:

-v  打印较少的errors/warnings

-vv  打印非常多调试信息和错误输出到控制台

-vvv 打印极多的调试信息和错误输出,也打印内部状态转变

#其他选项可通过在命令行输入“memcached -h”命令来显示


简单使用

Memcached基本命令:

#登录服务器

ncat 10.230.177.147 11211

telnet 10.230.177.147 11211

#查看服务器监控信息

stats

重要参数:

*connections:连接数相关

cmd_*:操作相关记录

bytes:当前空间占用大小

#插入数据

set:不管key存在与否,强制进行set操作;

add:必须在memcached中不存在相应key才能作用;

replace:要求memcached中必须存在相应key才能作用;

append:将数据追加到key对应value值的末尾。(不允许超过限制,用于管理list)

---------------

存入命令格式为<command> <key> <flags> <exptime> <bytes>

command             # 命令参数(set、get、delete、replace)

key                 # key 用于查找缓存值,要求小于250字符,不包含空格和控制字段

flags               #  用户端用来表示数据格式数值,如json、xml、压缩等

exptime             # 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)

bytes               # 在缓存中存储的字节数

datablock      # 文本行,以\r\n结尾

string              # 键值对应的缓存内容

回车后输入key的value信息,返回正常值STORED即已经写入数据成功.

---------------

示例:

set t1 0 0 2

hi

STORED

#取出数据

get:获取一个key的或多个keys的值

#删除数据

delete:删除存在的项

#清空数据

flush_all:清除memcached中所有项,主要采取将所有数据设置为过期的方式实现


配置用户名和密码

安装并启用SASL支持。

brew install memcached --enable-sasl-pwdb

配置

echo "mech_list: plain" > memcached.conf
echo "myuser:mypass" > /tmp/memcached-sasl-db
export MEMCACHED_SASL_PWDB=/tmp/memcached-sasl-db
export SASL_CONF_PATH=`pwd`/memcached.conf
memcached -u root -m 1024 -p 11212 -S -B binary -vvv
Initialized SASL.

使用的时候就需要使用密码了。