如何在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 }); } });