【问题标题】:Redis hash search by field and valueRedis 按字段和值进行哈希搜索
【发布时间】:2018-09-06 11:14:08
【问题描述】:

这是我的用例:

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

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

有什么我遗漏的吗?我可以使用 Redis 以更有效的方式完成它吗?

【问题讨论】:

    标签: hash redis socket.io node-redis


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      事实上,鉴于我正在使用 redis 和 socket.io,我最终只得到了一个哈希,其中 pair 是 . 作为第二个哈希,我在后端使用socket 对象-当subscribe 事件触发时,我将空间分配给socket.ownRoom 字段。在disconnect 事件中,我使用socket 对象中的此字段并搜索唯一的哈希。

      【讨论】:

        猜你喜欢
        • 2012-01-03
        • 2014-01-04
        • 2010-09-08
        • 2013-10-22
        • 2016-06-27
        • 2017-02-15
        • 1970-01-01
        • 2010-10-30
        • 1970-01-01
        相关资源
        最近更新 更多