<p>下面就来介绍一下Memcached。</p><p>Memcached 的主要特点</p><p>• 基于C/S 架构 协议简单</p><p>• 基于libevent的事件处理</p><p>• 自主内存存储处理</p><p>• 基于客户端的 Memcached 分布式</p><p>1、什么是Memcached</p><p>Memcached是一个开源的高性能,分布式的内存对象缓存系统,通过键值队的形式来对数据进行存取,Memcached是简单而强大,它的简单设计促进快速部署,易于开发,解决了大数据缓存面临的许多问题。</p><p>对应的源码地址为:</p><p>http://code.jellycan.com/files/memcached-1.2.6-win32-src.zip</p><p>然后,解压开来,会看到一个memcached.exe文件,进行如下图的安装,将以系统服务的形式安装到机上</p><p>然后查看系统服务,会发现已经可以看到memcached服务了</p><p>然后,选中此服务点鼠标右键,启动此服务。</p><p>在DOS界面中输入:telnet 127.0.0.1 11211来确认服务是否启动无误,如果无误,则会显示如下窗口:</p><p>上面图中显示的ERROR是我随便输入字符后按回车显示的,这是因为你需要安装memcached规定的协议来进行输入,否则就显示如上所示错误。</p><p>3、 memcached的协议与数据存取</p><p>所谓协议,可以理解为对其操作(数据存取)的语法规则,存取数据的常用命令和参数如下:</p><p>set:存入一条记录</p><p>key:记录的键值</p><p>flags:十进制的int,标识存储记录时的客户端标志,在记录取出时会返回。</p><p>exptim:数据的过期时间,0表示不过期,其他数值则表示有效的毫秒数,在过期后,客户端将取不到这条记录,memcached中的过期记录会被清空或删除。</p><p>get:表示从memcached取出key对应的值,如果没有对应的值则返回结束标志END</p><p>append:表示对key所对应的值在最后再加入输入的内容</p><p>delete:删除key对应的值</p><p>更多协议可参考:memcached包中所带的protocol.txt</p><p>具体例子如:</p><p>需要注意的是:在set时如果指定的字符长度为5,而输入的内容超过了这个长度,那么就会报错:CLIENT_ERROR bad data chunk</p><p>4 Memcached一些特性和限制</p><p>l 在 Memcached 中可以保存的 item 数据量是没有限制的,只有内存足够</p><p>l Memcached 单进程最大使用内存为 2G ,要使用更多内存,可以分多个端口开启多个 , Memcached进程</p><p>l 最大 30 天的数据过期时间 , 设置为永久的也会在这个时间过期,常量 REALTIME_MAXDELTA 60 * 60 *24 *30控制</p><p>l 最大键长为 250 字节,大于该长度无法存储,常量 KEY_MAX_LENGTH 250 控制</p><p>l 单个 item最大数据是1MB ,超过1MB 数据不予存储,常量 POWER_BLOCK 1048576 进行控制,它是默认的 slab 大小</p><p>l 最大同时连接数是200 ,通过conn_init() 中的freetotal 进行控制,最大软连接数是 1024,通过 settings.maxconns=1024进行控制</p><p>l 跟空间占用相关的参数: settings.factor=1.25, settings.chunk_size=48, 影响 slab的数据占用和步进方式</p><p>关于Memcached的使用,应当在需要的情况下才使用Memcached,比如需要实现分布式缓存系统,否则,如果是类似单台缓存服务器,那么建议最好不要用Memcached,改用其他缓存系统。</p>