【问题标题】:Memcache vs Redis vs Javascript Hash objectMemcache vs Redis vs Javascript Hash 对象
【发布时间】:2013-12-08 23:15:56
【问题描述】:

我知道当需要为多个服务器提供缓存时,会使用 memcache 和 redis。 我正在创建一个仅在单个服务器上运行并使用 mysql 作为数据库的节点应用程序,我需要散列大约 100,000 个键,每个键将包含 200 长度的 json 字符串,因此我不必调用 mysql 进行读取.

如果我使用 memcache 或 redis,我将使用回调来获取我的数据,但如果我使用 javascript hash,我可以同步获取数据,但它会以某种方式影响应用程序,比如内存使用率高。对于这样的应用程序,我应该使用哪一个?

【问题讨论】:

    标签: javascript caching memory redis memcached


    【解决方案1】:

    我知道当需要为多个服务器提供缓存时,会使用 memcache 和 redis。

    不一定,例如 Facebook 在他们的每个 mysql 服务器前面放置一个 memcache 实例。您可以使用 Redis/Memcache 进行快速计算(例如实时分析),而无需整个集群。

    我需要散列大约 100,000 个键,每个键将包含 200 长的 json 字符串,这样我就不必调用 mysql 进行读取。

    对我来说,这似乎是过早的优化,如果 MySQL 有足够的 RAM(数据集位于内存中),您不必担心性能,这只是 100 个键。

    如果我使用 memcache 或 redis,我将使用回调来获取我的数据

    如果真的取决于你使用什么语言(Ruby 和 Python 提供同步 Redis 客户端)以及使用什么类型的 paradygm(事件循环、线程池...)

    但如果我使用 javascript 哈希,我可以同步获取数据

    更准确地说,这只是因为您使用的是 node_redis,而不是因为您使用的是 javascript“哈希”(实际上是一个对象)。

    但它会以某种方式影响应用程序,例如内存使用率过高

    这取决于您是否加载了进程中的所有键,如果您使用的是Redis Hash,则每次只能查询您想要的字段而不是整个字段。

    对于这样的应用程序我应该使用哪一个?

    要记住的最好的事情是减少您必须在堆栈中维护的应用程序数量,同时仍然使用正确的工具来完成正确的工作。这里 MySQL 就足够了,但如果你真的想使用 Redis 或 MemCached,我会选择 Redis。它将提供与 memcached 类似的功能和相同的性能,让您在未来无需其他应用程序即可使用它的其他数据结构。

    此外,如果您将所有数据放在 Redis HASH 中,则只需一次调用即可检索一个字段 (hget) 或一组字段 (hmget) 或所有字段 (hgetall)。

    最后,关于recent statistics 和 Redis 生态系统(GUIhostinglibrairies,...),如果你真的想走这条路,Redis 似乎比 Memcached 更有前途。

    免责声明:我是 Redsmin 的创始人,这是一个面向开发人员的在线 Redis 管理和监控服务。

    【讨论】:

      【解决方案2】:

      这取决于 - 你甚至可以选择 memcached 而不是 mysql :)。对于简单的操作,例如仅 -readonly,只需将其存储在您的 javascript 代码中(我相信作为字典对象)就足够了。但请确保您有足够的 RAM :)。

      【讨论】:

      • 我正在使用 mysql 进行持久性和事务。 Redis 提供事务和持久性(不在默认配置中)。但是如果 redis、memcache 或 javascript 字典拥有 100,000 个键,结果会怎样。哪个更好。
      • 本机代码会表现得更好,但这取决于您如何实现您的字典对象,以便您可以在 O(1) 时检索。
      猜你喜欢
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 2019-05-28
      相关资源
      最近更新 更多