mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 20:16:04 +01:00
redis helpers
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
module.exports = function(redisClient, module) {
|
module.exports = function(redisClient, module) {
|
||||||
|
|
||||||
|
var helpers = module.helpers.redis;
|
||||||
|
|
||||||
module.setObject = function(key, data, callback) {
|
module.setObject = function(key, data, callback) {
|
||||||
callback = callback || function() {};
|
callback = callback || function() {};
|
||||||
redisClient.hmset(key, data, function(err) {
|
redisClient.hmset(key, data, function(err) {
|
||||||
@@ -20,28 +23,18 @@ module.exports = function(redisClient, module) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
module.getObjects = function(keys, callback) {
|
module.getObjects = function(keys, callback) {
|
||||||
var multi = redisClient.multi();
|
helpers.multiKeys(redisClient, 'hgetall', keys, callback);
|
||||||
|
|
||||||
for(var x=0; x<keys.length; ++x) {
|
|
||||||
multi.hgetall(keys[x]);
|
|
||||||
}
|
|
||||||
|
|
||||||
multi.exec(callback);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.getObjectField = function(key, field, callback) {
|
module.getObjectField = function(key, field, callback) {
|
||||||
module.getObjectFields(key, [field], function(err, data) {
|
module.getObjectFields(key, [field], function(err, data) {
|
||||||
if(err) {
|
callback(err, data ? data[field] : null);
|
||||||
return callback(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
callback(null, data[field]);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.getObjectFields = function(key, fields, callback) {
|
module.getObjectFields = function(key, fields, callback) {
|
||||||
module.getObjectsFields([key], fields, function(err, results) {
|
module.getObjectsFields([key], fields, function(err, results) {
|
||||||
callback(err, results ? results[0]: null);
|
callback(err, results ? results[0] : null);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -89,20 +82,8 @@ module.exports = function(redisClient, module) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
module.isObjectFields = function(key, fields, callback) {
|
module.isObjectFields = function(key, fields, callback) {
|
||||||
var multi = redisClient.multi();
|
helpers.multiKeyValues(redisClient, 'hexists', key, fields, function(err, results) {
|
||||||
for (var i=0; i<fields.length; ++i) {
|
callback(err, Array.isArray(results) ? helpers.resultsToBool(results) : null);
|
||||||
multi.hexists(key, fields[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
multi.exec(function(err, results) {
|
|
||||||
if (err) {
|
|
||||||
return callback(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i=0; i<results.length; ++i) {
|
|
||||||
results[i] = results[i] === 1;
|
|
||||||
}
|
|
||||||
callback(null, results);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -2,5 +2,38 @@
|
|||||||
|
|
||||||
var helpers = {};
|
var helpers = {};
|
||||||
|
|
||||||
|
helpers.multiKeys = function(redisClient, command, keys, callback) {
|
||||||
|
callback = callback || function() {};
|
||||||
|
var multi = redisClient.multi();
|
||||||
|
for (var i=0; i<keys.length; ++i) {
|
||||||
|
multi[command](keys[i]);
|
||||||
|
}
|
||||||
|
multi.exec(callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
helpers.multiKeysValue = function(redisClient, command, keys, value, callback) {
|
||||||
|
callback = callback || function() {};
|
||||||
|
var multi = redisClient.multi();
|
||||||
|
for (var i=0; i<keys.length; ++i) {
|
||||||
|
multi[command](keys[i], value);
|
||||||
|
}
|
||||||
|
multi.exec(callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
helpers.multiKeyValues = function(redisClient, command, key, values, callback) {
|
||||||
|
callback = callback || function() {};
|
||||||
|
var multi = redisClient.multi();
|
||||||
|
for (var i=0; i<values.length; ++i) {
|
||||||
|
multi[command](key, values[i]);
|
||||||
|
}
|
||||||
|
multi.exec(callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
helpers.resultsToBool = function(results) {
|
||||||
|
for (var i=0; i<results.length; ++i) {
|
||||||
|
results[i] = results[i] === 1;
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = helpers;
|
module.exports = helpers;
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
module.exports = function(redisClient, module) {
|
module.exports = function(redisClient, module) {
|
||||||
|
var helpers = module.helpers.redis;
|
||||||
|
|
||||||
module.setAdd = function(key, value, callback) {
|
module.setAdd = function(key, value, callback) {
|
||||||
callback = callback || function() {};
|
callback = callback || function() {};
|
||||||
redisClient.sadd(key, value, function(err, res) {
|
redisClient.sadd(key, value, function(err, res) {
|
||||||
@@ -9,12 +11,7 @@ module.exports = function(redisClient, module) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
module.setsAdd = function(keys, value, callback) {
|
module.setsAdd = function(keys, value, callback) {
|
||||||
callback = callback || function() {};
|
helpers.multiKeysValue(redisClient, 'sadd', keys, value, function(err, res) {
|
||||||
var multi = redisClient.multi();
|
|
||||||
for (var i=0; i<keys.length; ++i) {
|
|
||||||
multi.sadd(keys[i], value);
|
|
||||||
}
|
|
||||||
multi.exec(function(err, res) {
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -28,67 +25,35 @@ module.exports = function(redisClient, module) {
|
|||||||
|
|
||||||
module.setsRemove = function(keys, value, callback) {
|
module.setsRemove = function(keys, value, callback) {
|
||||||
callback = callback || function() {};
|
callback = callback || function() {};
|
||||||
|
helpers.multiKeysValue(redisClient, 'srem', keys, value, function(err, res) {
|
||||||
var multi = redisClient.multi();
|
|
||||||
for(var i=0; i<keys.length; ++i) {
|
|
||||||
multi.srem(keys[i], value);
|
|
||||||
}
|
|
||||||
multi.exec(function(err, res) {
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.isSetMember = function(key, value, callback) {
|
module.isSetMember = function(key, value, callback) {
|
||||||
redisClient.sismember(key, value, function(err, result) {
|
redisClient.sismember(key, value, function(err, result) {
|
||||||
if(err) {
|
callback(err, result === 1);
|
||||||
return callback(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
callback(null, result === 1);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.isSetMembers = function(key, values, callback) {
|
module.isSetMembers = function(key, values, callback) {
|
||||||
var multi = redisClient.multi();
|
helpers.multiKeyValues(redisClient, 'sismember', key, values, function(err, results) {
|
||||||
for (var i=0; i<values.length; ++i) {
|
callback(err, results ? helpers.resultsToBool(results) : null);
|
||||||
multi.sismember(key, values[i]);
|
});
|
||||||
}
|
|
||||||
|
|
||||||
execSetMembers(multi, callback);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.isMemberOfSets = function(sets, value, callback) {
|
module.isMemberOfSets = function(sets, value, callback) {
|
||||||
var multi = redisClient.multi();
|
helpers.multiKeysValue(redisClient, 'sismember', sets, value, function(err, results) {
|
||||||
for (var i = 0; i < sets.length; ++i) {
|
callback(err, results ? helpers.resultsToBool(results) : null);
|
||||||
multi.sismember(sets[i], value);
|
|
||||||
}
|
|
||||||
|
|
||||||
execSetMembers(multi, callback);
|
|
||||||
};
|
|
||||||
|
|
||||||
function execSetMembers(multi, callback) {
|
|
||||||
multi.exec(function(err, results) {
|
|
||||||
if (err) {
|
|
||||||
return callback(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i=0; i<results.length; ++i) {
|
|
||||||
results[i] = results[i] === 1;
|
|
||||||
}
|
|
||||||
callback(null, results);
|
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
module.getSetMembers = function(key, callback) {
|
module.getSetMembers = function(key, callback) {
|
||||||
redisClient.smembers(key, callback);
|
redisClient.smembers(key, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
module.getSetsMembers = function(keys, callback) {
|
module.getSetsMembers = function(keys, callback) {
|
||||||
var multi = redisClient.multi();
|
helpers.multiKeys(redisClient, 'smembers', keys, callback);
|
||||||
for (var i=0; i<keys.length; ++i) {
|
|
||||||
multi.smembers(keys[i]);
|
|
||||||
}
|
|
||||||
multi.exec(callback);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.setCount = function(key, callback) {
|
module.setCount = function(key, callback) {
|
||||||
@@ -96,11 +61,7 @@ module.exports = function(redisClient, module) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
module.setsCount = function(keys, callback) {
|
module.setsCount = function(keys, callback) {
|
||||||
var multi = redisClient.multi();
|
helpers.multiKeys(redisClient, 'scard', keys, callback);
|
||||||
for (var i=0; i<keys.length; ++i) {
|
|
||||||
multi.scard(keys[i]);
|
|
||||||
}
|
|
||||||
multi.exec(callback);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.setRemoveRandom = function(key, callback) {
|
module.setRemoveRandom = function(key, callback) {
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
module.exports = function(redisClient, module) {
|
module.exports = function(redisClient, module) {
|
||||||
|
|
||||||
|
var helpers = module.helpers.redis;
|
||||||
|
|
||||||
module.sortedSetAdd = function(key, score, value, callback) {
|
module.sortedSetAdd = function(key, score, value, callback) {
|
||||||
callback = callback || function() {};
|
callback = callback || function() {};
|
||||||
if (Array.isArray(score) && Array.isArray(value)) {
|
if (Array.isArray(score) && Array.isArray(value)) {
|
||||||
@@ -49,17 +52,14 @@ module.exports = function(redisClient, module) {
|
|||||||
if (!Array.isArray(value)) {
|
if (!Array.isArray(value)) {
|
||||||
value = [value];
|
value = [value];
|
||||||
}
|
}
|
||||||
var multi = redisClient.multi();
|
|
||||||
for(var i=0; i<value.length; ++i) {
|
helpers.multiKeyValues(redisClient, 'zrem', key, value, function(err, result) {
|
||||||
multi.zrem(key, value[i]);
|
|
||||||
}
|
|
||||||
multi.exec(function(err) {
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.sortedSetsRemove = function(keys, value, callback) {
|
module.sortedSetsRemove = function(keys, value, callback) {
|
||||||
multi('zrem', keys, value, function(err) {
|
helpers.multiKeysValue(redisClient, 'zrem', keys, value, function(err, result) {
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -70,7 +70,7 @@ module.exports = function(redisClient, module) {
|
|||||||
for(var i=0; i<keys.length; ++i) {
|
for(var i=0; i<keys.length; ++i) {
|
||||||
multi.zremrangebyscore(keys[i], min, max);
|
multi.zremrangebyscore(keys[i], min, max);
|
||||||
}
|
}
|
||||||
multi.exec(function(err) {
|
multi.exec(function(err, result) {
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -181,15 +181,11 @@ module.exports = function(redisClient, module) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
module.sortedSetsScore = function(keys, value, callback) {
|
module.sortedSetsScore = function(keys, value, callback) {
|
||||||
multi('zscore', keys, value, callback);
|
helpers.multiKeysValue(redisClient, 'zscore', keys, value, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
module.sortedSetScores = function(key, values, callback) {
|
module.sortedSetScores = function(key, values, callback) {
|
||||||
var multi = redisClient.multi();
|
helpers.multiKeyValues(redisClient, 'zscore', key, values, callback);
|
||||||
for(var i=0; i<values.length; ++i) {
|
|
||||||
multi.zscore(key, values[i]);
|
|
||||||
}
|
|
||||||
multi.exec(callback);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.isSortedSetMember = function(key, value, callback) {
|
module.isSortedSetMember = function(key, value, callback) {
|
||||||
@@ -199,34 +195,20 @@ module.exports = function(redisClient, module) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
module.isSortedSetMembers = function(key, values, callback) {
|
module.isSortedSetMembers = function(key, values, callback) {
|
||||||
var multi = redisClient.multi();
|
helpers.multiKeyValues(redisClient, 'zscore', key, values, function(err, results) {
|
||||||
for (var i=0; i<values.length; ++i) {
|
|
||||||
multi.zscore(key, values[i]);
|
|
||||||
}
|
|
||||||
multi.exec(function(err, results) {
|
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
results = results.map(function(score) {
|
callback(null, results.map(Boolean));
|
||||||
return !!score;
|
|
||||||
});
|
|
||||||
callback(null, results);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.isMemberOfSortedSets = function(keys, value, callback) {
|
module.isMemberOfSortedSets = function(keys, value, callback) {
|
||||||
var multi = redisClient.multi();
|
helpers.multiKeysValue(redisClient, 'zscore', keys, value, function(err, results) {
|
||||||
for (var i=0; i<keys.length; ++i) {
|
|
||||||
multi.zscore(keys[i], value);
|
|
||||||
}
|
|
||||||
multi.exec(function(err, results) {
|
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
results = results.map(function(score) {
|
callback(null, results.map(Boolean));
|
||||||
return !!score;
|
|
||||||
});
|
|
||||||
callback(null, results);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -235,21 +217,9 @@ module.exports = function(redisClient, module) {
|
|||||||
for (var i=0; i<keys.length; ++i) {
|
for (var i=0; i<keys.length; ++i) {
|
||||||
multi.zrange(keys[i], 0, -1);
|
multi.zrange(keys[i], 0, -1);
|
||||||
}
|
}
|
||||||
multi.exec(function(err, results) {
|
multi.exec(callback);
|
||||||
callback(err, results);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function multi(command, keys, value, callback) {
|
|
||||||
var m = redisClient.multi();
|
|
||||||
|
|
||||||
for(var x=0; x<keys.length; ++x) {
|
|
||||||
m[command](keys[x], value);
|
|
||||||
}
|
|
||||||
|
|
||||||
m.exec(callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
module.getSortedSetUnion = function(sets, start, stop, callback) {
|
module.getSortedSetUnion = function(sets, start, stop, callback) {
|
||||||
sortedSetUnion(sets, false, start, stop, callback);
|
sortedSetUnion(sets, false, start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user