Redis中的单独列表

时间:2020-10-13 19:44:11

标签: redis

我正在建立一个游戏服务器,其中我拥有一个已连接用户列表,同时又有一个战斗列表,这两个列表是分开的。

我将战役数据保存在Redis数据库中,以战役ID为键, 我可以在同一个Redis数据库中使用已连接的用户列表,并在避免战斗数据时以一种优雅的方式获得已连接的用户列表吗?

我找不到解决方案,目前将连接的用户保存在我的nodeJs服务器的JS词典中

更新:

为了澄清查询,

连接的用户对象是-

connectedUser = {
   nickname: string, (key)
   socketId: string,
   status: string,
   rating: number
}

我想用getUser(nickname)查询数据,该数据将获取特定用户,并使用getAllUsers()来获取所有连接的用户。

关于比赛,它包括所有比赛数据和统计信息

match = {
   id: string, (key)
   nicknameOne: string,
   nicknameTwo: string,
   ...
}

在匹配项中,我使用id查询,并认为它与哈希表以及hset和hget复杂度都很好。

对于连接的用户的查询,我想知道使用简单的js词典是否可以提供更快的查询结果。

js字典看起来像这样-

connectedUsers = {}
adding user - 
user  = {
  key: nickname,
  value: {
     socketId: string,
     status: string,
     rating: number
  }
}

在获得像这样的特定用户的同时-

connectedUsers[nickname]

并如此反复-

for(let key in connectedUsers) {
   //value - connectedUsers[key];
}

1 个答案:

答案 0 :(得分:0)

就性能而言,没有什么比JS字典更好。即使使用与Redis一样快的速度,也要增加进程间通信(如果托管在同一台计算机上)或网络延迟的开销。

如果要使用Redis进行持久化,存储连接的用户的一种方法是使用散列,其中键是昵称,值是用户对象。您可以HGET users-key userId来获得1个用户,HGETALL users-key来获取所有用户。