【发布时间】:2018-02-14 23:45:01
【问题描述】:
我打算使用一些缓存来避免频繁的读取操作(相同的数据)。应用程序是使用 Node.js 构建的。我正在使用 Apache Cassandra 数据库。
我应该使用 Cassandra 行缓存还是使用 Redis 缓存?
我已经在使用 Redis 服务器来缓存 PHP 会话、GEO 空间搜索和缓存 PHP 应用程序的其他数据。
哪个性能更好? Cassandra 行缓存还是 Redis 缓存?
【问题讨论】:
我打算使用一些缓存来避免频繁的读取操作(相同的数据)。应用程序是使用 Node.js 构建的。我正在使用 Apache Cassandra 数据库。
我应该使用 Cassandra 行缓存还是使用 Redis 缓存?
我已经在使用 Redis 服务器来缓存 PHP 会话、GEO 空间搜索和缓存 PHP 应用程序的其他数据。
哪个性能更好? Cassandra 行缓存还是 Redis 缓存?
【问题讨论】:
由于您已经在使用 redis 服务器,我会倾向于使用 Redis。
Redis 是一种纯内存解决方案,可与 oracle coherence 等竞争。
由于列族需要映射到 redis 的键值形式,因此您需要进行大量转换。
Cassandra 缓存只是数据库提供的一个附加组件。使用 cassandra 缓存构建缓存会更快,因为不需要进行额外的转换,但 redis 服务器的性能很可能会更好
【讨论】:
我为 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
【讨论】: