2010-03-19 84 views
12

我目前在memcached中有大约650,000项(使用430MB内存),并且数量还在增加。预计平稳之前将超过100万件。目前的命中率是25:1,所以效率非常好。我只想问,单个服务器上的memcached中有100万项太多了?如果没有,多少是太多?memcached中有多少个键太多?

+1

您可以添加其他服务器并在其上安装内存缓存并分发它。它的美丽,那么你不必担心这一点。 – DarthVader 2010-03-19 03:24:06

+1

请参阅?如果memcached对于死亡之星等服务器农场来说足够好,那么你已经足够了。 – Xeoncross 2012-10-10 22:00:46

回答

5

您可以将向上缩放到一个具有48GB的64位服务器,并将其放置到80,000,000个项目中。或者你可以将中缩放出来,并购买许多4GB服务器,并且每个服务器上最多可容纳2,400,000个物品。当你将它分布到多个服务器上时,Memcached的工作非常好。

+0

@Jim,感谢您的回答,那么2,400,000是memcached可以存储在4GB盒子中的最大数量? – jack 2010-03-19 08:16:06

+0

对不起,这是根据您当前在430MB中的650k项目进行的粗略估算。但是1米的物品远低于这种机器的最大值。您需要考虑高速缓存访​​问的*卷*增加(CPU或网络是否成为瓶颈?),以及如果memcached计算机出现故障时会发生什么情况。即使单台计算机可以处理缓存和加载,您可能需要两台或更多台计算机来支持应用程序的故障转移。 – 2010-03-19 13:28:04

2

但是,当您用尽备用内存专门用于memcached时,“太多”实际上是有效的。

数据存储在一个巨大的哈希表中,使查找非常接近O(1)。随着哈希表的增长,碰撞理论上会增加,但哈希表概念的高质量(以及适用于memcached)实现通常包含充足的手段来帮助解决这个问题,只需很少的放缓。

+0

不是哈希表O(log(n))? – user1130176 2014-11-22 10:56:50

+0

@ user1130176没有在一般情况下,没有。来自假定散列表的O(log(n))行为将暗示破坏或误用的实现。您可能正在考虑一些通常用于实现关联数组的其他结构 - 例如某种形式的树。 – 2014-11-23 17:38:40

+0

获得固定时间的唯一方法是某些确定性的,从关键到随机访问索引的一对一功能,对吧,memcached是做什么的?如何在O(1)时间内遍历100M记录?我很想知道这是如何完成的。 – user1130176 2014-11-25 17:43:20