如何在Redis商店客户端的键/值对中获取关键值?

我在我的socket.io聊天应用程序的Redis存储中存储用户名/套接字ID对。

当用户断开连接时,我需要从redis存储中删除用户名/ socketID对。 我已经看到如何从一个关键的价值获得价值,但从来没有一个关键。 可能吗? 或者任何一种方式,我怎么能删除键/值对只是值。 这是我的代码

用于添加到连接上存储

socket.on('username', function (username) { client.set(username, socket.id, function (err) { console.log(username + ":" + socket.id); }); }); 

对于断开连接,客户端不知道什么时候会断开连接,可能由于互联网连接丢失而发生,但是当套接字断开连接时,它总是碰到“断开连接”事件。 在这种情况下,我需要删除用户名/套接字ID对。

 socket.on('disconnect', function () { // dont know the username?? client.del(username, socket.id, function (err) { if (err) console.log(err); else { socket.disconnect(); console.log(socket.id + " DISCONNECTED"); } }); }); 

最简单的方法是存储对。 一个username/id和一个id/username 。 所以无论你有什么信息,你都可以得到另一个关键/值对。

我build议你把socket.io Idjoin到关键字中

 id:username 

那么你可以做这样的事情

 client.keys([socket.id + ':*'], function (err, result) { if (err){ //handle in some way } for (var r in result) { var key = result[r]; client.del(key, function(err, result){ // handle in some way }); } });