我有两个有序集合,我想从第一集合中分离记录,并通过从第二集集合中排除记录来存储在新列表/有序集合中。在Redis中,如何通过从第二个排序集合中排除记录来从第一个集合中分离记录。
下面是一个例子:
SET1:1,2,3,4,5 SET2:3,5,7,8,9
输出:1,2,4-
编辑:我已经想出了加载脚本并使用eval从nodejs执行脚本的方式。
奇怪的是,当我执行你的脚本时,即使是5-10个记录,它也需要1秒的时间来处理,这让我怀疑如果我有数千条记录,它有多大的可扩展性。
下面是我的示例代码的NodeJS:
hsetxx = 'redis.call("ZINTERSTORE","temp",2,"set11","set21","weights",1,0) redis.call("ZUNIONSTORE","result",2,"set11","temp","weights",1,-1) redis.call("ZREMRANGEBYSCORE","result",0,0)';
var redis = require('redis');
var client = redis.createClient('14470', connection);
client.on('connect', function() {
console.log('Connected to Redis');
});
client.script('load',hsetxx,function(err, result) {
console.log(err+'------------'+result);
});
client.zadd('set11', 1,1,1,2,1,3,1,4,1,5);
client.zadd('set21', 1,1,1,5);
client.evalsha(
'39c0da298cab6a6223b4d1e8222cf6d6a84e67b1', //lua source
0,
function(err, result) {
client.zrange('result', 0, -1, function(err, result) {
console.log(err+'------------'+result);
});
}
);
[如何获得排序集DIFF](HTTP的可能重复:// stackoverflow.com/questions/26698179/how-to-get-diff-on-sorted-set) –