Skip to content

Instantly share code, notes, and snippets.

@kashyapp
Created April 7, 2013 03:04
Show Gist options
  • Save kashyapp/5328725 to your computer and use it in GitHub Desktop.
Save kashyapp/5328725 to your computer and use it in GitHub Desktop.
Migrate from list to sortedset for irc archives.
var r = require('redis');
r.debug_mode = true;
var redis = r.createClient(),
allRows = [],
migrated = 0;
redis.on("end", function(){
console.log("we should be done here");
});
// channels
var fetchAll = function(err, channels) {
for (i = 0; i < channels.length; ++i) {
redis.lrange(channels[i], 0, -1, fetch);
}
finish();
}
// per channel
var fetch = function(err, rows) {
if (rows == null) { return; }
for (i = 0; i < rows.length; ++i) {
allRows.push(rows[i]);
}
}
// finish
var finish = function() {
redis.select(1, migrate);
}
// migrate allRows
var migrate = function() {
for (i = 0; i < allRows.length; ++i) {
var row = allRows[i];
var msg = JSON.parse(row);
redis.zadd(msg.room, msg.timestamp, row, function(err, reply){migrated++;});
}
redis.quit(report);
}
// report at the end
var report = function() {
console.log("migrated rows - " + migrated);
}
// get started
redis.keys('#*', fetchAll);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment