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.
使用的时候就需要使用密码了。