我正在考虑结合使用memcached和我的PHP应用程序来存储500万个键值对。我的目标是避免来回往返数据库(在我的情况下是文件系统)。我可能每秒可以访问100-500个键值。键值都是MD5,格式为:
array( 'MD5X' => 'MD5Y', ... )
我不确定数据的存储方式,但是如果我们乘
5 million * 16 bytes (keys) + 5 million * 16 bytes (values)
,我们将获得〜180MB。(编辑:尝试使用真正的memcached实例后,我用了750MB的空间来存储所有项目。)
数据集是固定的,因此我只会从中读取数据。
问题:
非常感谢!
最佳答案
您会获得所需的性能吗?确实。 Memcache快速发展。
我们存储约1000万个 key ,并且每秒访问内存缓存约700次。它从来没有让我们失望。
启动应用程序并将到期日期设置为很长的时间时,您可以将所有 key 加载到memcache中。您要记住的是,memcache最终是一个缓存。并且它不应该用作存储引擎。您必须在设计时考虑到总有可能找不到所需的数据(键),并在这种情况下进行数据库调用。
您可以查看诸如cassandra之类的noSQL数据库的替代方法,它具有出色的读写速度,可以满足您的需求。唯一的事情是,与memcache相比,微调cassandra有点困难。
关于memcached - 在内存缓存中存储百万个键值-好主意还是坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46540380/