MemCache

  Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。本文将详细介绍MemCache的内容

 

作用

  Memcache是danga的一个项目,最早是LiveJour  MemCachenal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用

  Memcache是以守护程序方式运行于一个或多个服务器中,随时会接收客户端的连接和操作

  MemCache缓存系统最主要的就是为了提高动态网页应用,分担数据库检索的压力。对于网站流量比较大的,可以使用memcache缓解数据库的压力,主要的焦点集中在以下两个方面:1. 使用MemCache作为中间缓存层减少数据库的压力和2. MemCache分布式的应用

 

安装

  1、下载软件,解压后,共以下三个文件

memcache1

  2、安装到windows服务,打开cmd命令行,进入memcached目录,执行memcached -d install命令,安装服务

  [注意]如果在没有安装过的情况下,出现"failed to install service or service already installed"错误,可能是cmd.exe需要用管理员身份运行

memcache2

  3、启动服务,执行memcached.exe -d start

memcache3

  最后,在计算机->管理->服务中,可以找到memcached服务

memcache4

 

管理

  memcache的端口号是11211,在启动memcache服务后进行连接

  [注意]telnet在windows下默认是不开启的,所以需要手动开启

telnet 127.0.0.1 11211 

memcache5

  进入memcache服务后,输入stats命令,会出现如下所示

memcache6

  stats命令的功能正如其名:转储所连接的memcached实例的当前统计数据。在下例中,执行 stats 命令显示了关于当前 memcached 实例的信息

STAT pid 22459                             进程ID 
STAT uptime 1027046                        服务器运行秒数 
STAT time 1273043062                       服务器当前unix时间戳 
STAT version 1.4.4                         服务器版本 
STAT pointer_size 64                       操作系统字大小(这台服务器是64位的) 
STAT rusage_user 0.040000                  进程累计用户时间 
STAT rusage_system 0.260000                进程累计系统时间 
STAT curr_connections 10                   当前打开连接数 
STAT total_connections 82                  曾打开的连接总数 
STAT connection_structures 13              服务器分配的连接结构数 
STAT cmd_get 54                            执行get命令总数 
STAT cmd_set 34                            执行set命令总数 
STAT cmd_flush 3                           指向flush_all命令总数 
STAT get_hits 9                            get命中次数 
STAT get_misses 45                         get未命中次数 
STAT delete_misses 5                       delete未命中次数 
STAT delete_hits 1                         delete命中次数 
STAT incr_misses 0                         incr未命中次数 
STAT incr_hits 0                           incr命中次数 
STAT decr_misses 0                         decr未命中次数 
STAT decr_hits 0                           decr命中次数 
STAT cas_misses 0                          cas未命中次数 
STAT cas_hits 0                            cas命中次数 
STAT cas_badval 0                          使用擦拭次数 
STAT auth_cmds 0 
STAT auth_errors 0 
STAT bytes_read 15785                      读取字节总数 
STAT bytes_written 15222                   写入字节总数 
STAT limit_maxbytes 1048576                分配的内存数(字节) 
STAT accepting_conns 1                     目前接受的链接数 
STAT listen_disabled_num 0                 
STAT threads 4                             线程数 
STAT conn_yields 0 
STAT bytes 0                               存储item字节数 
STAT curr_items 0                          item个数 
STAT total_items 34                        item总数 
STAT evictions 0                           为获取空间删除item的总数 

  使用命令quit,就可以退出memcache操作界面了

memcache7

 

命令

  通过使用memcache.exe -h可以查看memcache支持的命令

memcache8

-p <num>   设置端口号(默认不设置为: 11211)
-U <num>   UDP监听端口(默认: 11211, 0 时关闭) 
-l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)
-d   独立进程运行
-d start 启动memcached服务 
-d restart 重起memcached服务 
-d stop|shutdown 关闭正在运行的memcached服务 
-d install 安装memcached服务 
-d uninstall 卸载memcached服务 
-u <username> 绑定使用指定用于运行进程<username>
-m <num>  允许最大内存用量,单位M (默认: 64 MB)
-P <file> 将PID写入文件<file>,可以使得后边进行快速进程终止, 需要与-d 一起使用
-M 内存耗尽时返回错误,而不是删除项 
-c  最大同时连接数,默认是1024 
-f 块大小增长因子,默认是1.25 
-n 最小分配空间,key+value+flags默认是48 
-h 显示帮助

  一般地,memcache使用以下5个常用的命令

stats: 当前所有memcached服务器运行的状态信息
add: 添加一个数据到服务器
set: 替换一个已经存在的数据,如果数据不存在,则和add命令相同。
get: 从服务器端提取指定的数据。
delete: 删除指定的单个数据,如果要清除所有数据,可以使用flush_all指令

  关于memcache的错误提示主要有以下三个指令:

ERROR -- 普通错误信息,比如指令错误
CLIENT_ERROR <错误信息> -- 客户端错误
SERVER_ERROR <错误信息> --服务器端错误

命令格式

  格式:<命令> <键> <标记> <有效期> <数据长度>

  命令:add(添加)、set(修改)、delete(删除)、get(获取)

  <键>-key:发送过来指令的key内容

  <标记>-flags:调用set指令保存数据时的flags标记

  有效期:数据在服务器上的有效期限,如果是0,则数据永远有效,单位是秒

  数据的长度:block data 块数据的长度,一般在这个长度结束以后下一行跟着block data数据内容

返回值

  发送完数据后,客户端一般等待服务器端的返回,服务器端的返回值包括以下两种:

STORED 数据保存成功
NOT_STORED 数据保存失败,是因为服务器端这个数据key已经存在

  下面以add one 1 0 5为例,add表示添加数据,one表示键名,1表示标记,0表示有效期永久,5表示长度为5

  回车后输入12345,再回车,表示键值为12345,并保存成功

memcache9

  通过get one可以找到键名one的相关信息及键值

memcache10

  然后通过set one将标记改为2

memcache11

  再通过get one可以找到键名one的相关信息及键值

memcache12

  通过delete one删除one,再通过get one读取one的信息时为空

memcache13

  一般地,使用memcache并不常用遍历操作,但可以模拟出遍历的行为。首先,先存入5个数据

memcache14

  然后,执行stats items命令,可以看到出现很多的items行。执行stats cachedump 1 0命令。这里的1表示上面图中items后面的数字,0标示显示全部的数据,如果是1就标示只显示1条

memcache15

results matching ""

    No results matching ""