网站正在使用nodejs + socketio + mysql。 在启动我的应用程序之前创建一个全局对象以存储我在数据库中的所有内容是否正常?像用户的密码哈希值,用于非常快速的身份验证过程,比较给定的令牌+用户ID。
var GS= {
users: {
user1: {
token: "Djaskdjaklsdjklasjd"
}
,
user555: {
token: "zxczxczxczxc"
}
,
user1239: {
token: "ertertertertertret"
}
}
};
在连接时,节点使用gived user_id检查用户。
if (GS.hasOwnPropery("user"+user_id)) {
//compare gived token GS["user"+user_id].token
} else {
//go to database to get unknown id and then store it in GS
GS["user"+user_id] = { token: database_result };
}
而其他一切都是相同的,使用对象属性而不是查询数据库。所以,如果有人去网址/gameinfo/id/1
,我只是看看变量GS["game"+url_param] = GS["game"+1] = GS.game1
当然,我们不会谈论数据库中的数百万行。最多50-70k
真的不想使用像Redis或Tarantool这样的东西。
您可以使用全局对象来存储这些信息,但需要考虑以下事项:
如果您确信可以处理这些缺点,或者您在应用程序中不会遇到它们,那么请继续。否则,您应该考虑使用真正的缓存库框架。