愚见未来

人的思想时时刻刻都在进步,如果你早上起床,想起昨天所做的事情是那么幼稚和迂腐,那么恭喜你,你又变得成熟一点了!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Memcached 介绍

Posted on 2011-04-19 15:01  愚见未来  阅读(1755)  评论(0编辑  收藏  举报

下面就来介绍一下Memcached。

Memcached 的主要特点
基于C/S 架构 协议简单
基于libevent的事件处理
自主内存存储处理

基于客户端的 Memcached 分布式

 1、什么是Memcached

Memcached是一个开源的高性能,分布式的内存对象缓存系统,通过键值队的形式来对数据进行存取,Memcached是简单而强大,它的简单设计促进快速部署,易于开发,解决了大数据缓存面临的许多问题。

对应的源码地址为:

http://code.jellycan.com/files/memcached-1.2.6-win32-src.zip

然后,解压开来,会看到一个memcached.exe文件,进行如下图的安装,将以系统服务的形式安装到机上

然后查看系统服务,会发现已经可以看到memcached服务了

然后,选中此服务点鼠标右键,启动此服务。

在DOS界面中输入:telnet 127.0.0.1 11211来确认服务是否启动无误,如果无误,则会显示如下窗口:

上面图中显示的ERROR是我随便输入字符后按回车显示的,这是因为你需要安装memcached规定的协议来进行输入,否则就显示如上所示错误。

3、 memcached的协议与数据存取

所谓协议,可以理解为对其操作(数据存取)的语法规则,存取数据的常用命令和参数如下:

set:存入一条记录

key:记录的键值

flags:十进制的int,标识存储记录时的客户端标志,在记录取出时会返回。

exptim:数据的过期时间,0表示不过期,其他数值则表示有效的毫秒数,在过期后,客户端将取不到这条记录,memcached中的过期记录会被清空或删除。

get:表示从memcached取出key对应的值,如果没有对应的值则返回结束标志END

append:表示对key所对应的值在最后再加入输入的内容

delete:删除key对应的值

更多协议可参考:memcached包中所带的protocol.txt

具体例子如:

需要注意的是:在set时如果指定的字符长度为5,而输入的内容超过了这个长度,那么就会报错:CLIENT_ERROR bad data chunk

 4 Memcached一些特性和限制

Memcached 中可以保存的 item 数据量是没有限制的,只有内存足够

Memcached 单进程最大使用内存为 2G ,要使用更多内存,可以分多个端口开启多个 Memcached进程

最大 30 天的数据过期时间 , 设置为永久的也会在这个时间过期,常量 REALTIME_MAXDELTA 60 * 60 *24 *30控制

最大键长为 250 字节,大于该长度无法存储,常量 KEY_MAX_LENGTH 250 控制

单个 item最大数据是1MB ,超过1MB 数据不予存储,常量 POWER_BLOCK 1048576 进行控制,它是默认的 slab 大小

最大同时连接数是200 ,通过conn_init() 中的freetotal 进行控制,最大软连接数是 1024,通过 settings.maxconns=1024进行控制

跟空间占用相关的参数: settings.factor=1.25, settings.chunk_size=48, 影响 slab的数据占用和步进方式

关于Memcached的使用,应当在需要的情况下才使用Memcached,比如需要实现分布式缓存系统,否则,如果是类似单台缓存服务器,那么建议最好不要用Memcached,改用其他缓存系统。