Memcached 安装配置 & 基本指令

Memcached 

Memcached 安装配置 & 基本指令

Java 客户端连接 Memcached & Spring 集成


Memcached 简介

Memcached是一个开源、高性能、分布式内存对象缓存系统,同样是一个内存 key-value 数据库,常常用在各种缓存业务上,与 redis 相比,memcached 虽然不支持那么丰富的 value 数据类型,也不支持数据持久化,但是由于结构简洁,在二次开发上更加简单,具有更好的拓展性;
memcached 支持多平台,包括:Linux,FreeBSD,Solaris,Mac OS,Windows 等;
memcached 官网: http://memcached.org

Memcached 安装配置

以下使用 Ubuntu、Debian 的 apt-get 工具进行快速安装,也可以通过 webget 获取  http://memcached.org/latest 上的源码包自行编译安装;
对于 Rehat 系的 Linux 系统(Fedora,CentOS)对应使用 yum 工具快速安装,基本是一样的;
对于 memcahed 需要安装 libevent 和 memcahed 两个安装包;
 
$ sudo apt-get update                # 更新 apt 库
$ sudo apt-get install libevent      # 安装 libevent 的二进制包
$ sudo apt-get install memcached     # 安装 memcached 的二进制包
一般 apt-get 安装的可执行程序位于 /usr/bin 目录下,也可以通过 dkpg -L memcached 查看 memcached 包的安装目录,可以直接通过 /user/bin memcached 启动 memcached,也可以将该路径写到系统 PATH 变量中,方便启动;

Memcached 启动和参数

 
$ memcached          # 默认启动 memcached
$ memcached -h       # 查看 memcached 启动参数说明
$ memcached -d       # 后台启动 memcahed
memcached 含有丰富的启动参数,可以直接在启动 memcached 时输入对应的参数和参数值,也可以通过修改默认配置文件来修改默认启动参数,一般通过 apt-get 安装的默认配置文件在 /usr/share/memcached/memcached.conf.default ,可以通过 dpkg 指令查找该文件的位置;
常用的参数如下:
  • -d    以守护进程(后台进程)的方式启动 ;
  • -m  分配给 Memcache 使用的内存上限,单位 MB,默认 64;
  • -u   运行 Memcache 的用户,默认值 memcache;
  • -l    监听的服务器 IP 地址,可以有多个 IP,默认值 127.0.0.1;
  • -p   监听的端口,最好设置为 1024 以上的值,默认值 11211;
  • -c   最大运行的并发连接数,默认 1024;
  • -P 设置保存 Memcache 的 pid文件,当 memcahed 守护进程运行时,相关的 pid 会被写入该文件,需要确保 memcache 有读写该文件的权限;

Memcached 的终端连接

memcached 本身并没有像 Redis 的 redis-cli 那样的终端工具,可以通过系统的 telnet 连接 memcache-server,如下:
 
$ telnet 127.0.0.1 11211   # 终端连接 memcached
set key1 0 0 5       # 添加键值
assad
STOTRED
get key1             # 获取键值
VALUE assad
END
quit                 # 推出 telnet 连接

Memcached 常用键值读写指令

可以通过终端连接 memcached,直接对其中储存的键值数据进行操作;

储存指令

set key flags exptime bytes [noreply]
value
设置 key-value,如果 key 已经存在,则覆盖该数据;
返回值 -- STORED:保存成功; ERROR:保存失败
add key flags exptime bytes [noreply]
value
设置 key-value,如果 key 已经存在,则不更新数据;
返回值 -- STORED:保存成功; NOT_STORED:保存失败
replace key flags exptime bytes [noreply]
value
替换 key-value,如果 key 已经存在,替换为新设置的 value;
返回值 -- STORED:保存成功; NOT_STORED:保存失败
append key flags exptime bytes [noreply]
value
后追加 key-value,如果 key 已经存在,则在该 key 的 value 后追加数据;
返回值 -- STORED:保存成功; NOT_STORED:保存失败; CLIENT_ERROR:执行错误
prepend key flags exptime bytes [noreply]
value
前追加 key-value,如果 key 已经存在,则在该 key 的 value 前面追加数据
返回值 -- STORED:保存成功; NOT_STORED:保存失败; CLIENT_ERROR:执行错误
cas key flags exptime bytes unique_cas_token [noreply]
value
检查并设置 key-value (check-and-set),仅在当前客户端最后一次取值后,该 key 的 value 还没有被客户端修改的情况下,才能将该值写入,检查是通过 unique_cas_token 参数进行的,该参数是由 gets 获取的唯一一个 64 位值
返回值 -- STORED:保存成功; ERROR:保存失败;
                  EXISTS:在最后一次取值另外一个用户也在更新该数据;
                  NOT_FOUND:不存在该数据;

以上指令中参数的说明如下:
  • key:key 字段;
  • flags:可以包括键值对的整型参数,客户端使用该参数值储存键值对以外的信息;
  • exptime:在缓存中保存键值对的时间长度,单位秒,0 表示永久;
  • bytes:value 在缓存中储存的字节数;
  • noreply(可选):告知服务器不需要返回数据;
  • value:储存的 value 值(必须位于第二行);
以下是一个使用示例:
 
# 关于 cas 指令的示例
set user 0 0 5    # 写入 user = assad
assad  
STORED
cas user 0 0 5 1  # 检查并写入 user = assad,cas令牌为1
vancy
EXIST             # cas 令牌无效
gets user          # 获取 user,并返回一个 cas 值
VALUE user 0 5 4   # 该 user 的 cas 值为 4 
assad
END
cas user 0 0 5 4   # 通过 gets 获取的 cas 令牌设置 user
vancy
STORED

查找,删除,更改指令

get key1  [ key2 key3 ...] 获取指定 key 的 value
gets key1  [ key2 key3 ...] 获取指定 key 的 value,包括该 key 的 exptime,bytes,和一个 cas 值;
del key1  [ key2 key3 ...]  [noreply] 删除指定 key
incr key increment_value
decr key decrement_value
对指定 key 储存的 value执行自增,自减 操作,该 value 必须是十进制32位无符号数值;

系统统计信息指令

stats  输出系统统计信息,详细的信息列表说明如下
stats sizes 显示所有 items 的大小、个数
stats slabs 显示各个 slabs 信息,包括 chunk 的大小、数目、使用情况等
stats items 显示各个 slab 中 items 的数目和空闲时长
flush_all [time] [noreply] 清除缓存中的所有键值,time 参数用于设置延迟执行时间,单位s

stats 指令返回的统计信息列表:
  • pid: memcache服务器进程ID
  • uptime:服务器已运行秒数
  • time:服务器当前Unix时间戳
  • version:memcache版本
  • pointer_size:操作系统指针大小
  • rusage_user:进程累计用户时间
  • rusage_system:进程累计系统时间
  • curr_connections:当前连接数量
  • total_connections:Memcached运行以来连接总数
  • connection_structures:Memcached分配的连接结构数量
  • cmd_get:get命令请求次数
  • cmd_set:set命令请求次数
  • cmd_flush:flush命令请求次数
  • get_hits:get命令命中次数
  • get_misses:get命令未命中次数
  • delete_misses:delete命令未命中次数
  • delete_hits:delete命令命中次数
  • incr_misses:incr命令未命中次数
  • incr_hits:incr命令命中次数
  • decr_misses:decr命令未命中次数
  • decr_hits:decr命令命中次数
  • cas_misses:cas命令未命中次数
  • cas_hits:cas命令命中次数
  • cas_badval:使用擦拭次数
  • auth_cmds:认证命令处理的次数
  • auth_errors:认证失败数目
  • bytes_read:读取总字节数
  • bytes_written:发送总字节数
  • limit_maxbytes:分配的内存总大小(字节)
  • accepting_conns:服务器是否达到过最大连接(0/1)
  • listen_disabled_num:失效的监听数
  • threads:当前线程数
  • conn_yields:连接操作主动放弃数目
  • bytes:当前存储占用的字节数
  • curr_items:当前存储的数据总数
  • total_items:启动以来存储的数据总数
  • evictions:LRU释放的对象数目
  • reclaimed:已过期的数据条目来存储新数据的数目




 

你可能感兴趣的:(Memcached)