memcached - 在内存缓存中存储百万个键值-好主意还是坏主意?

标签 memcached

我正在考虑结合使用memcached和我的PHP应用程序来存储500万个键值对。我的目标是避免来回往返数据库(在我的情况下是文件系统)。我可能每秒可以访问100-500个键值。键值都是MD5,格式为:

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

我不确定数据的存储方式,但是如果我们乘5 million * 16 bytes (keys) + 5 million * 16 bytes (values),我们将获得〜180MB。

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

数据集是固定的,因此我只会从中读取数据。

问题:
  • 这是一个好的设计还是不好的设计?
  • 是否可以强制memcached永远(除非服务器崩溃)不必重新加载数据?假设存储容量高于存储的数据?如果没有,我可以采用哪些技术来实现相同的目标。

  • 非常感谢!

    最佳答案

    您会获得所需的性能吗?确实。 Memcache快速发展。
    我们存储约1000万个 key ,并且每秒访问内存缓存约700次。它从来没有让我们失望。

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

    您可以查看诸如cassandra之类的noSQL数据库的替代方法,它具有出色的读写速度,可以满足您的需求。唯一的事情是,与memcache相比,微调cassandra有点困难。

    关于memcached - 在内存缓存中存储百万个键值-好主意还是坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46540380/

    相关文章:

    Memcached key 过期

    java - 内存缓存架构

    php - 找不到自动配置。请检查您在 CentOS 中的 autoconf 安装 Xampp

    python - 导入错误 : No module named memcache (Django project)

    java - AppEngine Memcache 原子获取和删除

    Drupal 站点 - Memcache 连接错误

    html - 什么更快 : serving a static HTML file from the filesystem or from MemCache?

    c - 异步memcached库

    queue - Tokyo Cabinet 如何处理大整数?

    caching - 内存缓存和内存数据库之间的区别