Erotic Teen Erotic Erotic

memcached : N.S.thoughts Adas Eroticnastyteen Cs Modules Php Name Forums File Viewtopic T 40388 Erotic Nasty Teen

Adas Eroticnastyteen Cs Modules Php Name Forums File Viewtopic T 40388 Erotic Nasty Teen

安装

Redis使用posix c编写,所以安装直接make就完事。 运行可以直接用内置配置跑,还是非常方便的。如果一个软件是否能够快速安装测试部署,会得到更多人的青睐。尤其是像需要短时间测试体验类似的东西,要是配置麻烦,我直接就放弃了。

协议

Redis没有使用memcached协议,而是使用自己的一套规范

速度

Redis的速度很快,110000 SETs/second, 81000 GETs/second。和普通版的memcached相当。

命令
除了针对String的set/get外,redis支持针对Set/List的操作,如LPUSH,RPUSH。
这里有完整的命令列表

多Db
这是另一个有意思的东西,Redis支持不同的db空间,通过selectdb来切换到不同的db空间。从而实现数据的隔离。redis允许key在不同的db之间移动,也支持flush某个db。这个特性可以解决原来memcached中不支持tag/namespace的问题。

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一样,值得持续关注。

u memcached : N.S.thoughts Adas Eroticnastyteen Cs Modules Php Name Forums File Viewtopic T 40388 Erotic Nasty Teena q Nasty Erotic n memcached : N.S.thoughts Adas Eroticnastyteen Cs Modules Php Name Forums File Viewtopic T 40388 Erotic Nasty Teenh q Erotic