Socket.IO&Redis(它们都去哪了?)

我有Socket.IO连接到一个RedisStore,使用“socket.set()”将它的信息存储在我的redis数据库中。

它通过创build某种forms的随机密钥来实现这一点,我只能假设它是套接字的唯一标识符。

我的问题是这个。 从我所看到的这个数据我保存的东西永远不会被删除,除非我以某种方式手动删除它。 每个新的套接字都被保存和存储,但是旧的套接字不会被删除,除非我断开连接。 但是,这意味着如果我重新启动节点或崩溃等数据将永远持续下去。

我的目标是试图find清理旧密钥数据库的地方。 我的问题是,我很难findfind这些旧钥匙的好方法。

关于我想到的一个解决scheme的想法是将这些键名存储在某种types的集合中。 然后我可以遍历它们,并检查它们是否在启动时仍在使用。 但是,据我所知,我无法find正在使用的密钥。

另一个虽然是我可以尝试和遍历所有的键,但这似乎是一个坏主意。 我也不能正确区分他们使用的键和我使用的键,除非我特别避免使用特定长度的键。

所以我的问题是,如果有人有一个好的方法来保持我的数据库清洁,或者如何跟踪socket.io在我的数据库中使用的密钥。

谢谢,萨米

ps如果您需要更多信息或者我不清楚,请告诉我,我会尽我所能解释。

如果问题只是需要删除不使用的密钥,为什么不使用Redis的ttl和过期 。 您可以在每次使用或其他设置时设置过期值,并将其设置为非常高。 如果某些东西没有用,例如一个星期,它会在幕后自动被删除。