mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 19:46:01 +01:00
sortedSetsAdd
using mullti/bulk for redis/mongo lets you add a score/value pair to multiple sorted sets at once
This commit is contained in:
@@ -20,6 +20,14 @@ module.exports = function(db, module) {
|
||||
});
|
||||
};
|
||||
|
||||
module.sortedSetsAdd = function(keys, score, value, callback) {
|
||||
async.each(keys, function(key, next) {
|
||||
module.sortedSetAdd(key, score, value, next);
|
||||
}, function(err) {
|
||||
callback(err);
|
||||
});
|
||||
};
|
||||
|
||||
module.sortedSetRemove = function(key, value, callback) {
|
||||
module.getListRange(key, 0, -1, function(err, set) {
|
||||
set = set.filter(function(a) {return a.value !== value.toString();});
|
||||
|
||||
@@ -18,6 +18,26 @@ module.exports = function(db, module) {
|
||||
});
|
||||
};
|
||||
|
||||
module.sortedSetsAdd = function(keys, score, value, callback) {
|
||||
callback = callback || helpers.noop;
|
||||
|
||||
value = helpers.valueToString(value);
|
||||
var data = {
|
||||
score: parseInt(score, 10),
|
||||
value: value
|
||||
};
|
||||
|
||||
var bulk = db.collection('objects').initializeUnorderedBulkOp();
|
||||
|
||||
for(var i=0; i<keys.length; ++i) {
|
||||
bulk.find({_key: keys[i], value: value}).upsert().updateOne({$set: data});
|
||||
}
|
||||
|
||||
bulk.execute(function(err, result) {
|
||||
callback(err);
|
||||
});
|
||||
};
|
||||
|
||||
module.sortedSetRemove = function(key, value, callback) {
|
||||
callback = callback || helpers.noop;
|
||||
value = helpers.valueToString(value);
|
||||
@@ -34,6 +54,7 @@ module.exports = function(db, module) {
|
||||
db.collection('objects').remove({_key: {$in: keys}, value: value}, callback);
|
||||
};
|
||||
|
||||
|
||||
function getSortedSetRange(key, start, stop, sort, withScores, callback) {
|
||||
db.collection('objects').find({_key:key}, {fields: {_id: 0, value: 1, score: 1}})
|
||||
.limit(stop - start + 1)
|
||||
|
||||
@@ -8,6 +8,19 @@ module.exports = function(redisClient, module) {
|
||||
});
|
||||
};
|
||||
|
||||
module.sortedSetsAdd = function(keys, score, value, callback) {
|
||||
callback = callback || function() {};
|
||||
var multi = redisClient.multi();
|
||||
|
||||
for(var i=0; i<keys.length; ++i) {
|
||||
multi.zadd(keys[i], score, value);
|
||||
}
|
||||
|
||||
multi.exec(function(err, res) {
|
||||
callback(err);
|
||||
});
|
||||
};
|
||||
|
||||
module.sortedSetRemove = function(key, value, callback) {
|
||||
callback = callback || function() {};
|
||||
redisClient.zrem(key, value, function(err) {
|
||||
|
||||
Reference in New Issue
Block a user