Redis 与 Memcache


最近,咱们看到许多使用Redis的案例,尤为是大型及先进的系统中应用的更多。事实上,咱们正管理着一个新的规模庞大的Redis集群,设计该架构是为了每秒能处理上百万个事务。然而,Redis与Memcache有许多相似的地方,都是基于网络的、运行于内存的、用来储存key value数据的存储器,因此一般被用来缓存许多信息,包括像PHP会话及数据库数据等。但Redis比Memcache要好,缘由以下:redis

Redis最主要的特色是比较稳定,或者说它可将数据存储在物理磁盘上而不是虚拟内存中。这就解决了Memcache所面临的第一个问题:Memcache在损坏或重启时会丢失所有数据。这样,Redis即可用在包含许多服务器的大型系统中,而不会意外丢失数据。经过简单的快照或日志即可保证Redis的持续服务性。可是MemCache则会由于各类各样的一些小问题而受到影响,好比高内存占用率。数据库

Redis还有另一个有趣的独有的特色:就是数据复制。它容许您创建主-从系统,当主系统瘫痪后,您可在从系统上恢复功能。这也使得您可在从系统上读取数据,从而获得更高的性能,甚至能够在另一个地理位置的独立数据中心中的分布式从系统上读取。缓存

最后,Redis的功能远比Memcache要多的多,它支持集、列表及更高级的数据组。此外,它拥有许多功能能够处理系统中的数据。它支持某些特定事务及乐观锁定机制,最近发布的2.6版本还支持Lua脚本。服务器

然而,Redis也不是尽善尽美的。最主要的问题就是不支持直接集群,在Memcache中,您能够列出3个服务器进行library分配,甚至可使用统一的哈希函数,当某个服务器瘫痪时,数据能够一致地迁移出去。幸运的是,Redis团队正在攻关这一技术,准备在下一版本中将该特色融入进来。网络

另外一个重要的明显区别是,Memcache支持多线程而Redis不支持多线程。由于Redis只采用单一内核,因此必须同时处理许多实例,甚至达到每秒要处理1百万个请求。这将给Redis的配置、管理及监控带来挑战。多线程

总的来讲,咱们看到Redis前进了一大步,尤为是当集群尚未那么重要的时候。Redis比Memcache更强大,存储数据更可靠,而且极可能是“key-value ”存储的将来 。 架构


(Authored by Steve Mushero / ChinaNetCloud CEO & CTO  本博客英文原文请点此查看
分布式

相关文章
相关标签/搜索