Redis哈希按字段和值搜索

问题描述 投票:0回答:2

这是我的用例:

我有一个简单的客户端/服务器应用程序,通过socket.io进行通信。由于我需要在房间名称和相应的套接字所有者之间进行跟踪,因此我决定创建简单的Redis散列,其中每对都是。此哈希允许我通过其房间名称快速查找特定房间所有者socketId。到现在为止还挺好。上面的哈希值在subscribe后端事件上更新,使用非常简单的haset调用node_redis redis.client.hset(keyRoomToSocketId, room, socketId, cb);这确保每次新套接字到达并创建自己的具有唯一名称的房间时,将其socketId设置为哈希及其相应的字段 - room

现在,我想在socket disconnect事件中找到这对并将socketId设置为空字符串。显然(告诉我,如果我错了),我无法通过socketId搜索哈希。我在脑海中想要的是并行地再制作一个哈希值,其中,要反转的对,即。这将允许我通过socketId搜索第二个散列,检索空间,从那里删除该对,然后搜索第一个散列并将socketId设置为“”到相应的对中。

有什么我缺少的,我可以使用Redis以更有效的方式做到这一点吗?

hash redis socket.io node-redis
2个回答
1
投票

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


0
投票

实际上,根据事实,我使用redis和socket.io,我最终得到的只有一个哈希,其中对是。作为第二个哈希,我在后端使用socket对象 - 当subscribe事件触发时,我为socket.ownRoom字段分配空间。关于disconnect事件,我使用来自socket对象的这个字段并搜索到唯一的哈希。

© www.soinside.com 2019 - 2024. All rights reserved.