javascript - immutable.js 可以与服务器上的 redis 互换吗?

标签 javascript database data-structures redis immutable.js

Immutable.js 状态 ( https://facebook.github.io/immutable-js/ )

Immutable.js provides many Persistent Immutable data structures including: List, >Stack, Map, OrderedMap, Set, OrderedSet and Record.

These data structures are highly efficient on modern JavaScript VMs by using >structural sharing via hash maps tries and vector tries as popularized by Clojure >and Scala, minimizing the need to copy or cache data.

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

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.

他们描述中共享的相似语言使我认为我可以将 Immutable.js 用作“轻型”Redis 解决方案或将 Redis 用作“重型”Immutable.js 解决方案来跟踪我的多人游戏状态(所有事件游戏状态和玩家状态)。

  • 它们之间有哪些主要区别?
  • 什么时候应该选择 immutable.js 而不是 redis?
  • 什么时候应该选择 redis 而不是 immutable.js?

目前我找不到这两个库的比较(当我搜索 Google 或 Stack Overflow 时),这让我相信我的假设(它们有时可以代替彼此使用)非常不准确,但我找不到任何东西来证实或否认这一点。

我不知道它们是否可以一起使用(除非是在它们如何不同和相互补充的情况下)。我知道 Immutable.js 专注于处理不可变的结构,而 Redis 似乎并不专注于此,但这仍然引出了一个问题,我不能只坚持使用 Immutable.js 吗?

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

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

最佳答案

Immutable.js 将在客户端保存您的数据结构,并在用户的浏览器内存被清除时被删除,即当他们关闭浏览器时。

Redis 是您服务器的内存数据库,能够非常快速地查找并将该数据发送给您的客户端。您可以使用 Redis 代替数据库,但通常最好使用数据库作为备份,因为 Redis 内存非常不稳定。

它们都用于解决非常不同的问题,对于您的情况,听起来您只需要 immutable.js

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

关于javascript - immutable.js 可以与服务器上的 redis 互换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42848423/

相关文章:

algorithm - 给定一组点,找出这三个点中的任何一个是否共线

javascript - 将变量从 Flask HTML 模板传递到 JavaScript 文件以供使用

javascript - JQuery 数据表链接 onclick 事件

javascript - Esc 事件监听器不起作用

mysql - 显示90天前的所有记录

sql - 在 Oracle (PL/SQL) 中执行动态 SQL 并确保安全性

javascript - Webpack 动态配置加载失败

php - 为什么不删帖子呢?

javascript - 删除图中的节点在js中不能完美工作

java - 如何创建保持相同顺序的链接列表的深拷贝