2017-03-17 53 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

相關問題