这是我的用例:
我有一个简单的客户机/服务器应用程序,通过socket.io进行通信。因为我需要在room name和它对应的socket所有者之间保持跟踪,所以我决定创建一个简单的redis散列,其中,每一对都是。这个散列允许我根据文件室名称快速找到特定的文件室所有者socketid。到现在为止,一直都还不错。
上面的散列在subscribe后端事件上更新,使用非常简单的haset通过node_redisredis.client.hset(keyRoomToSocketId, room, socketId, cb);调用
这确保了每当一个新的套接字到达并用一个唯一的名称创建它自己的房间时,都能将它的socketId设置为散列以及它对应的字段-room
现在,我想在socketdisconnect事件中找到这对并将socketid设置为空字符串。显然(如果我错了,请告诉我),我无法按socketid搜索散列。我脑子里想的是再做一个并行的散列,其中,要反转的一对,即。这将允许我按socketid搜索第二个散列,检索空间,从中删除该对,然后搜索第一个散列并将socketid设置为“”进入相应的对。
我有什么遗漏吗?我能用redis更有效地做到这一点吗?

最佳答案

这应该管用-你的想法是正确的。你要做的基本上是一个双向映射,一个或两个散列是简单而有效的,主要的“代价”是重复数据。非规范化是nosql的常见做法,特别是redis。

关于hash - Redis哈希按字段和值搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52202826/

10-12 02:26