memcache, 在线服务
memcached 入门到精通
Memcached 是高性能、分布式的内存对象缓存系统(Memory Object Cache System);是一种典型的 C/S 架构服务器,对外提供基于 key-value (键/值)映射的快速数据存储和检索服务。
357次点击4分钟阅读
Memcached 简介
Memcached 是高性能、分布式的内存对象缓存系统(Memory Object Cache System);是一种典型的 C/S 架构服务器,对外提供基于 key-value (键/值)映射的快速数据存储和检索服务。
Memcached 采用基于文档的协议,使用空格作为分隔符,使用\r\n作为结尾符。通过telnet可手动访问存储在memcached中的数据。
Memcached 既能提供基于 TCP 的服务,也能提供基于UDP的服务。该如何选择呢?
文档给出的建议是:当客户端并发请求过多,TCP 连接成瓶颈时,可以考虑采用 UDP 接口。众所周知,UDP协议不会保证传输的正确性,因此 UDP 接口只能用于GET 这样并不一定需要成功的操作,即使失败,也只会导致 cache 未命中,影响不会很大。
备注:在memcached启动的时候,通过参数-p(TCP端口号)/-U(UDP端口号)区分
memcached安装配置
安装和配置可以参看:Memcached安装及配置
启动示例
参数说明如下:
参数名解释
参数说明
功能详情
连接
使用 telnet 连接到memcached: telnet 127.0.0.1 11211
基本命令
格式:
command <key> <flags> <expiration time> <bytes>
<value>
各个参数说明如下:
下面将详细说明各个命令的使用
- set:用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。使用
set
命令正确设定了键值对,服务器将使用单词 STORED 进行响应。需要输入第一行的命令和第二行的value;
- get:用于检索与之前添加的键值对相关的值。您将使用 get 执行大多数检索操作;
- replace:仅当键已经存在时,
replace
命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应;
- delete:用于删除 memcached 中的任何现有值。您将使用一个键调用 delete,如果该键存在于缓存中,则删除该值。如果不存在,则返回一条 NOT_FOUND 消息;
- add:仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应NOT_STORED;
- gets:
gets
命令的功能类似于基本的get
命令。两个命令之间的差异在于,gets
返回的信息稍微多一些:64 位的整型值非常像名称/值对的 “版本” 标识符;
- cas:用于设置名称/值对的值(如果该名称/值对在您上次执行
gets
后没有更新过)。它使用与set
命令相类似的语法,但包括一个额外的值:gets
返回的额外值;
- stats:转储所连接的 memcached 实例的当前统计数据;
- flush_all:仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则
flush_all
能提供很大的用处