【问题标题】:Cassandra Row Cache vs Redis CacheCassandra 行缓存与 Redis 缓存
【发布时间】:2018-02-14 23:45:01
【问题描述】:

我打算使用一些缓存来避免频繁的读取操作(相同的数据)。应用程序是使用 Node.js 构建的。我正在使用 Apache Cassandra 数据库。

我应该使用 Cassandra 行缓存还是使用 Redis 缓存?

我已经在使用 Redis 服务器来缓存 PHP 会话、GEO 空间搜索和缓存 PHP 应用程序的其他数据。

哪个性能更好? Cassandra 行缓存还是 Redis 缓存?

【问题讨论】:

    标签: node.js cassandra redis


    【解决方案1】:

    由于您已经在使用 redis 服务器,我会倾向于使用 Redis。
    Redis 是一种纯内存解决方案,可与 oracle coherence 等竞争。 由于列族需要映射到 redis 的键值形式,因此您需要进行大量转换。

    Cassandra 缓存只是数据库提供的一个附加组件。使用 cassandra 缓存构建缓存会更快,因为不需要进行额外的转换,但 redis 服务器的性能很可能会更好

    【讨论】:

    • Cassandra 行缓存也会影响节点上的 GC,将缓存保留在 redis 中以避免仅此一项可能会提高性能。
    【解决方案2】:

    我为 ScyllaDB 工作,这是一个用 C++ 编写的兼容 Cassandra 的数据库。

    为什么不在数据库之前放置缓存有很多原因 - 在我看来,最重要的是应用程序/部署变得更加复杂。所以如果数据库可以提供缓存应该选择。

    ScyllaDB 的缓存默认缓存的分区/行数据。如果 Cassandra 的行缓存不能很好地为您服务 - 您可以尝试 Scylla。

    去年我与 Outbrain 就此类用例进行了一次演讲,讲述了他们从 Cassandra+Memcache 迁移到 ScyllaDB 的经验Scylla Summit 2016: Outbrain Case Study - Lowering Latency While Doing 20X IOPS of Cassandra

    您还可以找到我们的 CEO 兼联合创始人 Dor Laor 的以下帖子,内容是为什么应避免在数据库之前放置缓存 7 Reasons Why Not to Put a Cache in Front of Your Database

    【讨论】:

      猜你喜欢
      • 2014-05-01
      • 2020-09-04
      • 1970-01-01
      • 2021-07-02
      • 2017-01-29
      • 2020-08-27
      • 1970-01-01
      • 2018-02-13
      • 2014-11-06
      相关资源
      最近更新 更多