Cock Chapm

memcached : N.S.thoughts Realy Cocksuckerchamp Szh News Php Id 131 Sex Slave Cock Sucker Chapm

Realy Cocksuckerchamp Szh News Php Id 131 Sex Slave Cock Sucker Chapm

Sharding
和Flare不一样,Redis本身没有内置的sharding功能,而是需要通过client api来实现。比如和libmemcached一样通过实现consistent hashing来实现sharding。

Replication
仅支持简单master-slave。 slave支持只读查询,slave也可以通过上级slave来获得同步数据。

缺陷:
1. redis将所有数据放入内存中,而通过后台进程定时将数据dump到磁盘上,从而实现持久存储。这是redis为什么这么快的原因。因此,如果你的存储数据超过可用内存大小,就会导致OS使用swap文件。作者解释,鱼和熊掌不可兼得,既然要快,就多费点内存吧,反正现在内存也很便宜,呵呵。
2.由于只能通过client端实现sharding,而redis并不支持master之间的复制,因此如何实现动态节点添加和删除,只能由client端来实现。从这个方面说,redis还只能作为一个高级的memcached。

=====
我准备测试用Redis解决以下场景的问题:
1. 高速消息队列
2. 访客列表类
常见的最近来访啊,这篇文章谁看过啊,谁谁点评过啊,等等
3. SNS中常见的事件,最近发生了什么
4. 最近更新名单
虽然以上这些通过将数据结构unserialize为string后可以用memcached来实现,但既然redis是data structures server,那么会更加高效好用。
同时,这些数据也不是关键数据,即便丢失也无伤大雅,对于需要可靠保存的数据,要么使用flare,更为安全则应使用传统的数据库。

July 19, 2009 | Filed Under Technotes

2 Comments 

Flare-兼容Memcached协议的分布式(key/value store)键值存储系统

Flare, Green Lab开发的开源产品,底层使用TC, 完全兼容Memcached协议(ASCII,非binary)。主要有以下特性:

现在似乎大家都很关心好的key/value存储方案。作为传统数据库的补充。Memcached由于缺乏持久存储功能,因此无法作为一个可靠的key/value方案。
我之前关注过基于Memcached派生的一些方案,包括
memcachedb – 新浪团队的,bdb+memcached协议
tokyo tyrant – TC+memcached网络接口
LightCloud 在Tokyo Tyrant上实现了多节点的分布式管理。

repcached - 在memcached源码基础上增加复制功能
redist - 除了string,还允许存储list、set等类型

除了上述软件,还有一些用Erlang,Java的方案,我并没有考虑。首先,我的使用场景还没有大到那个地步,我希望选择一个性价比更高的中低端方案

这其中,最关注的是TT(Toyko tyrant)。 但TT令我不太满意的是对于memcached的协议的兼容性并不够好,比如不能正确处理过期,也不能处理flag。导致客户端无法正常解压缩和unserialize,虽然在client端都能处理,不过当时是打算作为一个session storage,无法自动过期就比较麻烦,解决方案是通过在TT端执行lua可以进行gc处理,总体感觉不够完满。
memcachedb 对于存储定长字段不错,但不固定长度记录的存储似乎不够好,也没有现行的例子。
repcached 仅仅是支持mm复制,但无法正面解决持久存储的问题。

redist 当初测试时缺乏我需要的api。不过目前已经有了PHP PECL版本的api。 redist的复制机制现在也有了很大的改进。redist的应用实例不多。但是,我认为它和mongoDb一样,值得持续关注。

flare 则是最后选择的。经过测试,虽然速度上没有其他那么快,但其良好的扩展能力让我非常满意。此外,对于memcached协议的兼容性也做的很好。
还有1个特性,flare的key可以超过256bytes,而value可以超过1mb。 传统memcached由于内存分配策略因此有上述限制。
flare的底层存储是可以扩展的,目前使用的是tc(tokyo cabinet)。
从这个结构上看,倒是一个tt的很好替代品。

flare的运行性能还是不错,目前在GREE中得到实际应用,摘自项目网站描述:

Flare is running at GREE (one of the major SNS services in Japan) w/ 6 masters and 6 slaves (over 2,000M keys), and 500-1,000 qps (load average is nearly 0.00…).

看起来很诱人。因为同样TT超过100M的key,性能会直线下降。plurk的lightclound通过多节点的负载均衡解决了这个问题。(btw,plurk.com目前是被和谐中,要想取得lightclound源码还需要穿墙,唉)

以下是在我的osx上进行的安装测试。

1. 首先下载源码

Top/OpenSource/Flare/Download-en.html

2. 使用port安装boost

$ port
install boost

3. 安装tc

4. 编译flare m memcached : N.S.thoughts Realy Cocksuckerchamp Szh News Php Id 131 Sex Slave Cock Sucker Chapma f f Sex i Cock Sex Sex a memcached : N.S.thoughts Realy Cocksuckerchamp Szh News Php Id 131 Sex Slave Cock Sucker Chapmx Chapm