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

时间:2018-05-14 00:37:49

标签: javascript node.js caching redis memcached

我的节点服务器每隔一分钟就会以嵌套数组的形式收集数据。数据看起来像def remove_duplicates(sequence): k = [] for x in sequence: for i in k: if x != i: k.append(x) else: k = k return k

这些阵列中大约有2000个需要缓存。持久性并不重要,因为我经常更新它。

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

在这种情况下,redis会提供哪些优势?

1 个答案:

答案 0 :(得分:3)

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

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

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

  3. Redis提供的功能不是标准Javascript的一部分。这些功能包括发布/订阅,数据查询,事务处理,到期密钥(适用于过期的数据,如会话) ),LRU密钥老化(适用于有界缓存),未构建到Javascript中的数据结构,如排序集,位图等等......仅举几例。

  4. 冗余/复制/高可用性。如果您的数据不需要在磁盘上长期使用,但确实需要强大,那么您可能需要针对任何一台服务器都失败了。您可以将数据复制用于多个redis服务器,从而实现故障转移,备份而不会增加持久性到磁盘的性能拖累。

  5. 这就是说,没有理由使用redis,因为它是"要做的事情"。只有当你发现一个问题时才使用redis,它解决的问题比在node.js中使用一个对象存储更好。

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