2017-03-17 46 views
-1

Immutable.js状态(https://facebook.github.io/immutable-js/在服务器上,immutable.js与redis是否可以互换?

Immutable.js提供了许多永久不可变的数据结构,包括:列表,>堆栈,地图,OrderedMap,套装,OrderedSet和记录。

这些数据结构是通过使用经由哈希映射尝试和矢量尝试作为普及通过的Clojure>和Scala>结构共享,最小化需要复制或高速缓存数据上的JavaScript现代的虚拟机高效。

Redis的状态(https://redis.io/

Redis的是一个开源(BSD许可),内存中的数据结构存储,用作数据库,高速缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,具有范围查询的排序集,位图,超级日志和具有半径查询的地理空间索引。 Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性,并通过Redis群集实现自动分区。

在他们的描述中有着相似的语言借给我想我可以用Immutable.js作为一个“轻”的Redis溶液或Redis的作为“重” Immutable.js解决方案来跟踪我的多人的游戏状态(所有活动的游戏州和球员状态)。

  • 这些是什么之间的一些关键区别是什么?
  • 什么时候应该有人通过redis选择immutable.js?
  • 什么时候应该有人选择redis over immutable.js?

目前我无法找到这两个库的比较(当我搜索谷歌或堆栈溢出时),这让我相信我的假设(它们可以用来代替对方)是严重不准确的,但我无法确定或否认这一点。

我不知道,如果他们可以一起使用(除非是在它们不同的上下文和互相恭维)。我认识到Immutable.js专注于处理不可变的结构,而Redis似乎没有专注于此,但仍然存在问题,我不能坚持Immutable.js吗?

这里是我挂了......都提供了内存中的数据结构。如果我不关心持久性,为什么我应该关心我选择的?

要清楚上下文是在服务器上而不是浏览器上,并且如果服务器重置,我不希望服务器状态持久存在(在mongoldb中存储的内容之外)。

+0

绝对不是。 Redis是一个数据库,Immutable是js库。 – Bergi

+1

这两个描述中唯一相似的语言是* data structure *。地狱,一切都只适用于数据结构! – Bergi

+0

我得到Redis是一个数据库,但我为什么要使用它来通过Immutable.js存储应用程序状态?我不确定为什么有人认为这是一个糟糕的问题。 – Underflow

回答

0

Immutable.js将在客户端保存您的数据结构,并且只要用户的浏览器内存被清空(即关闭浏览器时)就会被擦除。

Redis是一个适用于您的服务器的内存数据库,可以快速查找并将数据发送给客户端。您可以使用redis来代替数据库,但通常是将数据库作为备份的好主意,因为redis内存非常不稳定。

它们都被用来解决非常不同的问题,对于你的情况,它听起来像你所需要的是不可变的。js

如果您需要您的应用程序具有保存状态,您将设置一种方法将您的immutable.js数据结构发送到您的服务器以存储在redis数据库中。

+0

关闭浏览器?导航到另一个页面就足够了。 – Bergi

+0

感谢您的回答Aaronw。我可以使用Immutable.js服务器端来跟踪服务器状态......据我所知,所以浏览器状态似乎与我的问题无关。无论如何,即使我的服务器重置,因为我只是在网上跟踪游戏和玩家,这一切都可以。 (用户名将被存储在mongoldb中)。也许我需要澄清的问题是参考服务器。 – Underflow

相关问题