我正在使用智能手机作为蜂鸣器编写一个“最快手指优先”的 Node.JS 应用程序。我打算使用 Socket.IO 来处理进入应用程序的答案,但不知道在回合结束时存储数据以进行比较的最佳方式是什么。
我最初的想法是将每个传入套接字事件的应答数据插入到 Redis 中,因为它是基于 RAM 的,我的假设是它会很快。但是,将每个答案按顺序插入数组会更好吗?这会在传入套接字事件期间持续存在吗?
希望这听起来很简洁!
最佳答案
你说得对,数组会更快。这取决于您计划支持多少用户以及您计划如何扩展。如果您正在尝试提供任何人都可以创建“游戏”的“服务”,并且您计划在您的平台上支持数十万个“游戏”,请选择 Redis,因为您可能需要扩展您的 Web 层并在一个网络服务器不会出现在另一个网络服务器上。
但是,如果您将此作为一次性的事情来做,一次支持一个游戏,甚至可能来自通过 wifi 连接到您的笔记本电脑的 friend (尽管互联网上的小型 Heroku 服务器也可以正常工作)然后我会选择一个数组。与外部数据库(甚至与 Redis 一样快的数据库)通信会增加复杂性。 Node.js 是事件和单线程的,这意味着您不必担心竞争条件。你可以写
var firstPresser;
socket.on('press', function (presser) {
if (!firstPresser) {
firstPresser = presser;
// return "You pressed first"
} else {
// return "You didn't press first"
}
});
请原谅我的伪代码,我对 socket.io 并不特别熟悉,但我想你明白了。
关于javascript - 最快的手指优先应用程序架构 - Redis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370526/