Redis 与 Javascript 对象。在这种情况下,Redis 提供了哪些优势?

ice*_*y-t 6 javascript memcached caching redis node.js

My Node 服务器以嵌套数组的形式收集数据,每分钟左右收集一次。数据看起来像这样[[8850, 3.1, '2009jckdsfj'], ..., [8849.99, 25.3, '8sdcach83']]

大约有 2000 个这样的数组需要缓存。持久性并不重要,因为我经常更新它。

使用 redis 似乎是“要做的事情”,但是我看不到好处。使用 javascript 对象,我不需要字符串化和解析数组来存储和使用它们。

在这种情况下,redis 会提供什么优势?

jfr*_*d00 18

以下是使用 redis 的一些原因:

  1. 多个进程可以访问数据。它在一个单独的进程中运行并具有一个联网的 API,因此多个进程可以访问数据。例如,如果您使用集群并希望所有集群实例都可以访问相同的数据,则需要使用一些外部数据库(例如 Redis)。

  2. 内存使用与 node.js 分开。 它运行在一个单独的进程中,因此它的内存使用与 node.js 是分开的。如果您要存储大量数据,则 redis 可能会比 node.js 更好地处理大量内存使用,或者您最好在两个进程之间而不是全部使用 node.js 中拆分使用量。

  3. Redis 提供了不属于标准 Javascript 的功能。 这些包括发布/订阅、数据查询、事务、过期键(适用于会话等即将过期的数据)、键的 LRU 老化(适用于有界缓存)、未内置于 Javascript 中的数据结构,如排序集、位图等... 仅举几例。

  4. 冗余/复制/高可用性。 如果您的数据不需要长期保存在磁盘上,但确实需要健壮,您可能需要数据保护以防止任何单个服务器出现故障。您可以将数据复制到多个 redis 服务器,从而进行故障转移、备份,而无需承担持久存储到磁盘的额外性能拖累。

这就是说,没有理由使用 redis,因为它是“要做的事情”。仅当您发现一个问题并且它比仅在 node.js 中使用对象存储更能解决问题时,才使用 redis。

仅供参考,redis 站点提供了一系列与 redis 相关的各种内容的白皮书。这些白皮书也可能是进一步信息的良好来源。