1

2 つの並べ替えられたセットがあります。1 番目のセットからレコードを分離し、2 番目の並べ替えられたセットからレコードを除外して、新しいリスト/並べ替えられたセットに格納したいと考えています。

以下に例を示します。

セット1: 1,2,3,4,5 セット2: 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);
      });
 }
);
4

3 に答える 3

0

あなたはSDIFFを探していると思います:

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SDIFF key1 key2 key3 = {b,d}

https://redis.io/commands/sdiff

ただし、ソートされたセットに相当するものはありません。

于 2016-12-29T10:44:25.703 に答える