memcached基本介绍及命令

用了一段时间memcache,没有认真的看过,了解下顺便做下笔记。

1. memcached

memcached是danga的一个项目,是一种高性能分布式缓存技术,将数据缓存到内存中,来提高访问速度。(目的:提速)

注:当内存一旦关闭,数据就会丢失;推荐存储一些频繁变化(比如统计在线人数)、检索(热点数据)且数据丢失也没影响。

memcached维护了一张大的hashmap内存表,以key-value形式存储,可以存放的类型(字符串、数值、boolean、对象、二进制、数组)

memcached是线程安全的。

libevent是一套跨平台的事件处理接口的封装

memcached使用libevent来进行网络并发连接的处理,能够保持在很大的并发情况下,仍旧能够保持快速的响应能力。

 

memcached在内容容量达到指定值得情况下使用LRU算法自动删除不使用的缓存。

应该每一次存储会记录时间戳,当容量到达瓶颈时找到时间最久的进行替换。

 

memcached是分布式缓存服务器,但服务器没有分布式功能,各个memcached不会互相通信以共享信息,所以这完全取决于客户端的实现。

2. 下载(略过)

3. 安装启动

以window为例,管理员身份打开控制台

几种方式

1.

1.1. 将memcached加入到后台进程中,打开命令控制台,进入到memcached根目录,输入 memcached.exe -d install 执行安装(卸载:memcached.exe -d  uninstall)

1.2. 启动net start memcached(停止 net stop memcached) 或者 memcached.exe -d start (停止memcached.exe -d stop)

2. 直接双击打开memcached.exe文件

3. 控制台命令memcahed.exe -p 11211 (11211为memcached默认端口,端口可以自行修改)

其他dot命令自行百度,比如查看端口是否被占用等。。。

4. memcached基本命令

使用telnet测试

telnet是tcp/ip中一份子,是internet登录远程服务的标准协议和主要方式。

命令行:telnet ip 端口  

如果提示未找到telnet 是由于未开启,可到《添加或删除程序中将其开启》如图:

 

 

memcached命令

格式:

<command name> <key> <flags> <exptime> <bytes><data block>

<command name> set/add/replace/delete......
<key> key值,唯一
<flags> 客户端使用它存储关于键值对的额外信息
<exptime> 数据存活时间,0代表永久
<bytes> 数据字节数
<data block> 存储数据块,长度需要等于<bytes>

add : 创建一个键值对存储


 

set:如果key不存在则创建,存在则覆盖。
 

 

replace:要求key必须存在,否则提示no_stored



 

delete:如果key存在提示deleted如果不存在提示no_found

语法:delete key

append:在原有的key值后面增加数据

语法:append key 0 0 2

prepend:在key原有的数据前面增加

同上

flush_all:立即使所有存在的元素失,它并不会立即删除所有资源,只是标记,因此已经使用的内存会被新的数据复写。

stats:查看当前memcached的一些基本状态,比如版本,启动时间,命中率,连接数,命令执行次数等等

值得关注的是:通常我们可以根据命中率来判断当前内存中缓存的数据是否合理,如果命中率偏低,那么代表有很多数据存到内存中并没有使用,且无意义的占用了内存,可以据此优化memcached存储。



 

Pid: Memcached 服务器中的进程编号

UptimeMemcached服务器启动之后所经历的时间,单位秒

Time 当前系统时间,单位秒

Version: Memcached 的版本号

pointer_size:服务器所在主机操作系统的指针大小,一般为3264

curr_items:表示当前缓存中存放的所有缓存对象的数量

total_items:表示从memcached服务启动到当前时间,系统存储过的所有对象的数量,包括已经删除的对象

bytes:表示系统存储缓存对象所使用的存储空间,单位为字节

curr_connections:表示当前系统打开的连接数

total_connections:表示从memcached服务启动到当前时间,系统打开过的连接的总数

cmd_get 查询缓存的次数,即使不成功也算一次

cmd_set 保存数据的次数,当然这里只保存成功的次数

get_hits:表示获取数据成功的次数。

get_misses:表示获取数据失败的次数。

evictions:为了给新的数据项目释放空间,从缓存移除的缓存对象的数目。比如超过缓存大小时根据LRU算法移除的对象,以及过期的对象

bytes_readmemcached服务器从网络读取的总的字节数

bytes_writtenmemcached服务器发送到网络的总的字节数

limit_maxbytesmemcached服务缓存允许使用的最大字节数

threads:被请求的工作线程的总数量

 

缓存命中率 = get_hits / cmd_get * 100% ; 

猜你喜欢

转载自jacksang.iteye.com/blog/2291690