在memcached中存储百万个关键值 - 好的或坏的想法?

时间:2017-10-03 08:34:53

标签: memcached

我正在考虑将memcached与我的PHP应用程序结合使用来存储500万个键值对。我的目标是避免来回DB(在我的例子中是文件系统)。我可以每秒对密钥值进行100-500次访问。键值既是MD5又是以下形式:

array( 'MD5X' => 'MD5Y', ... )

我不确定数据是如何存储的,但如果我们乘以5 million * 16 bytes (keys) + 5 million * 16 bytes (values),我们就会得到~180MB。

(编辑:尝试使用真正的memcached实例后,我用了750MB来存储所有项目。)

数据集已修复,因此我只会从中读取数据。

问题:

  1. 这是一个好的还是坏的设计?
  2. 我可以永远强制memcached(除非服务器崩溃)必须重新加载数据吗?假设内存上限高于存储的数据?如果没有,我可以采用哪种技术来实现相同的目标。
  3. 非常感谢!

1 个答案:

答案 0 :(得分:0)

您会获得所需的性能吗?当然。 Memcache非常快速。 我们存储了大约1000万个密钥,我们每秒访问memcache大约700次。它永远不会让我们失望。

您可以在启动应用程序时加载内存缓存中的所有密钥,并将过期日期设置为很长时间。你要记住的事情是memcache最终是一个缓存。它不应该用作存储引擎。你必须设计它认为总是有可能找不到你需要的数据(密钥),并在那种情况下进行数据库调用。

您可以查看像cassandra这样的noSQL数据库的替代方案,它具有出色的读写速度,可以满足您的需求。唯一的问题是,与memcache相比,调整cassandra有点困难。