【问题标题】:Memcached, Redis, or Couchbase [closed]Memcached、Redis 或 Couchbase [关闭]
【发布时间】:2012-03-02 01:54:08
【问题描述】:

我有一个大约 16GB RAM 的 Debian 服务器,我正在与 nginx 和几个重型 mysql 数据库以及一些自定义 php 应用程序一起使用。我想在 Mysql 和 PHP 之间实现内存缓存,但是数据库太大而无法将所有内容存储在 RAM 中。就我的研究而言,我认为 LRU 缓存可能会更好。这是否排除了 Redis? Couchbase 也是一个考虑因素。

【问题讨论】:

    标签: caching redis memcached couchbase


    【解决方案1】:

    假设有一个运行 nginx + php + mysql 实例的唯一服务器并有一些剩余的可用 RAM,使用该 RAM 缓存数据的最简单方法是增加 mysql 实例的缓冲区缓存。数据库已经使用类似 LRU 的机制来处理它们的缓冲区。

    现在,如果您需要将部分处理从数据库中移出,那么预缓存可能是一种选择。在说 memcached/redis 之前,如果只考虑一台服务器,那么与 php 集成的共享内存缓存(例如 APC)将是高效的(实际上比 redis/memcached 更高效)。

    memcached 和 redis 都可以考虑执行远程缓存(即在各个节点之间共享缓存)。我不会为此排除 redis:它可以很容易地为此目的进行配置。两者都将允许定义内存限制,并以类似 LRU 的行为处理缓存。

    但是,我不会在这里使用 couchbase,它是一种弹性(即应该在多个节点上使用)NoSQL 键/值存储(即不是缓存)。您可能可以将一些数据从 mysql 实例移动到 couchbase 集群,但仅将其用于缓存是过度设计 IMO。

    【讨论】:

    • 我使用过 APC,但是我们在 web 应用程序中使用的 php cli 脚本无法访问相同的数据。这就是 memcached 成为下一个逻辑步骤的地方。我在看 couchbase,因为我读到它或多或少是 memcached 的非易失性(如果需要)替代品。
    • 应该考虑 Couchbase,因为它有一个普通的老式内存缓存操作模式(称为存储桶)但使管理更容易,管理统计数据等。全面披露:我为 Couchbase 工作。
    【解决方案2】:

    正如 Matt Ingenthron 所指出的和 Hari 所指出的,Couchbase 支持作为 Memcached 的直接替代品。 Couchbase 以非弹性方式利用 memcached,因为参与 memcache 集群的每个节点都是谨慎的,没有持久性,即只是一个缓存,但 couchbase 还提供确实提供持久性的“Couchbase”存储桶类型。 Membase 也是代码的一部分,因此 Couchbase 不仅从磁盘提供数据,还从 RAM 提供数据,并将其保存在那里,同时复制到其他节点并在应用更改时保存到磁盘。我强烈推荐 Couchbase 3.x 在一个足迹中进行缓存和持久性,或者如果您只想要一个与持久性层分开的缓存层,则可以使用多个足迹。

    【讨论】:

      【解决方案3】:

      我们最初使用 memcached 来缓存数据。在 memcached 中,为不同应用程序在不同存储桶下分区数据是一个真正的问题。此外,我们需要仅从一个存储桶中刷新数据。监控数据是另一个要求。我们搬到了 Couchbase 并使用了 memcache 风格的存储桶。我想使用 Couchbase memcache 风格的存储桶进行缓存比使用 memcached 更灵活、更高效。

      【讨论】:

      • 这是缓存/memcache 用户迁移到 Couchbase 的常见用例(使用 memcache 存储桶,有时使用 Couchbase 存储桶)。我邀请你看看couchbase.com/memcached
      【解决方案4】:

      您是否考虑过使用具有持久性的内存中 NoSQL 解决方案之一将您的数据库完全移动到 RAM 中?它可能比原始 MySQL 数据库占用更少的存储空间,因为许多 NoSQL 解决方案通常比 SQL 数据库占用更少的空间。此外,如果服务器端逻辑对您非常重要,那么请尝试使用 Tarantool,因为它具有板载 Lua 脚本,并且内存占用应该非常小。在我的例子中,Tarantool 中的相同数据占用的数据比 MySQL 中的少两倍。这是因为它们每行和每字段的开销很小,并且使用消息包进行数据存储。

      【讨论】:

        猜你喜欢
        • 2012-05-20
        • 2011-02-21
        • 1970-01-01
        • 2015-06-19
        • 2019-09-12
        • 2011-01-16
        • 2013-08-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多