与Redis相比,memcached是一个恐龙吗?
最近几个星期,我在memcached上工作了很多,刚刚发现了Redis。 当我阅读这部分自述文件时,突然在我的肚子里感到一种温暖而舒适的感觉:
Redis可以用作类固醇上的memcached,因为它和memcached一样快,但是有更多的function。 像memcached一样,Redis也支持设置超时键,以便在给定的时间内,这个键会被自动删除。
这听起来很神奇。 我也发现这个网页的基准: http : //www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison
所以,诚实地说,memcache真的是那个古老的dinousaur,从性能angular度来说这是一个糟糕的select,而这个名为Redis的新手呢?
以前我没有听说Redis,所以我的问题的方法!
Memcache是一个非常好的工具,非常可靠。
而不是从低于100毫秒范围内更快的人的angular度来看这个问题,看看软件的每个“类”的性能。
- 它只使用本地RAM吗? – >最快
- 它使用远程内存? – >快
- 它使用内存加硬盘 – >哦哈。
- 它只使用硬盘 – >运行!
取决于你需要什么,一般我认为:
- 你不应该太在乎表演。 每个核心的Redis速度更快,但是memcached能够在没有来自客户端的帮助下,使用单个可执行文件和TCP端口使用多个核心。 另外,memcached的速度更快,大值为100k。 Redis最近对大数值(不稳定分支)进行了大量的改进,但在这个用例中memcached仍然更快。 这里的重点是:也没有其他可能会成为他们可以提供的每秒查询的瓶颈。
- 你应该关心内存使用情况。 对于简单的键值对,memcached具有更高的内存效率。 如果你使用Redis哈希,Redis更有效率。 取决于用例。
- 您应该关心持久性和复制,这两个function仅在Redis中可用。 即使你的目标是build立一个caching,它有助于升级或重新启动你的数据仍然存在。
- 您应该关心您需要的操作types。 在Redis中,有很多复杂的操作,即使只考虑caching用例,在单个操作中,通常也可以做更多的事情,而不需要在客户端处理数据(有时需要大量的I / O)。 这个操作通常和简单的GET和SET一样快。 所以,如果你不需要GET / SET,但是Redis可以提供很多帮助(比如时间线caching)。
没有使用案例现在很难select正确的使用方式,但是我认为对于很多事情来说,Redis是有意义的,因为即使你不想把它用作数据库,更有能力可以解决更多的问题,不仅仅是caching,甚至是消息传递,排名等等。
当然,由于我是Redis项目的首席开发人员,所以我可能会有偏见。
所以,诚实地说,memcache真的是那个古老的dinousaur,从性能angular度来说这是一个糟糕的select,而这个名为Redis的新手呢?
- 比较function设置,然后
Redis
有更多的function; - 比较易于安装
Redis
也容易Redis
。 不需要依赖; - 比较积极的发展
Redis
也比较好; - 我相信
memcached
比Redis
快一点。 它根本不接触光盘; - 我的意见是,
Redis
比memcached
更好的产品。
Redis没有做的memcached是最近最less使用的从caching中逐出的值。 使用memcached,您可以随心所欲地设置多个值,并且当内存溢出时,最近没有使用的值将被删除。 使用Redis,只能通过设置每个事件的超时时间来估计这个值。 当需要释放内存时,它会查看三个随机键并删除最接近即将到期的键。
这是主要区别,如果你只是用它作为caching。
你也可以看看Membase。
http://www.northscale.com/products/membase_server.html
我没有使用它,但它似乎与Redis类似,因为它是一个以内存为中心的KV商店,具有持久性。 与我所看到的主要区别在于:
- Redis具有更高的数据处理能力(有序集合等)
- Redis有一个待定的Redis集群项目来增加横向扩展性
-
Redis基于考虑LRU和对象大小的混合algorithm将单层数据卸载到磁盘(VM)。
-
Membase使用memcached有线协议 – 可用作现有应用程序的升级path
- Membase设置为使用分布式哈希表方法水平扩展
- Membase可以使用LRU方法支持多层数据卸载(很less用到磁盘,很less有东西用于SSD,频繁的东西留在RAM中)
- 不确定在Membase中的TTL能力。
select可能取决于您的应用程序在Redis中如何利用额外的数据处理function。
Hazelcast原生支持memcached协议
http://hazelcast.org/docs/latest/manual/html-single/hazelcast-documentation.html#memcache-client
因此是memcached的现代替代scheme。 你应该尝试所有的解决scheme,看看什么最适合你。