【发布时间】:2011-10-31 19:19:05
【问题描述】:
目前我有以下代码,使用 Node.js、socket.io 和 Redis:
var io = require('socket.io'), redis = require("redis"), client = redis.createClient();
io.sockets.on('connection', function (socket) {
var socket_id = socket.id;
socket.on('chat', function(data) {
client.set('user:' + socket_id, data['colour']);
// The user left the page. Remove them from Redis.
socket.on('disconnect', function () {
client.del('user:' + socket_id);
client.quit();
});
});
});
这对于正常的套接字连接和断开都很好,但是如果 Node 出现故障,或者我只是重新启动 Node 作为正常开发的一部分,这似乎会出现问题。
密钥永远不会从 Redis 中删除。所以存储在 Redis 数据库中的条目数量是逐渐增长的。我也不确定 Redis 客户端是否干净地存在。
如何清理 Redis 条目并退出 Redis 客户端Node 退出时,以及套接字断开连接时?
【问题讨论】:
标签: javascript node.js redis socket.io