Ich bin neu in Redis und ich experimentiere mit Redis-Transaktionen und ich möchte Redis-Transaktionen im folgenden Szenario verwenden. Sie müssen wissen, ob dies machbar ist:Java Redis (jedis) Transaktion und Sorted Set
- Starten Sie die Transaktion.
- Top 10 Elemente aus sortierten Satz lesen.
- Eine 'for-Schleife' für jedes der Elemente, um etwas zu tun.
- Ausführen.
Ich habe den folgenden Code versucht, aber es funktioniert nicht, wie ich eine <Response>.get()
vor der Ausführung der Transaktion mache.
final Transaction tx = jedis.multi();
final Response<Set<Tuple>> tuples = tx.zrangeByScoreWithScores("randomKey", 0d, 100, 0, 10);
for (final Tuple tuple : tuples.get()) {
jedis.incr(tuple);
}
tx.exec(); //In a hope that get and sets happen in a single transaction.
Gibt es eine Möglichkeit, dies zu umgehen?
Haben Sie es bei redis-site mit Lua und EXEC gemacht? –
Ja, das ist der Hack, den ich gerade versuche. Hoffte, etwas mit Pipelining und Transaktionen zu bekommen. – face
Da Sie die Daten benötigen, um in der Lage zu sein, darüber zu iterieren, müssen Sie entweder in zwei Phasen Client-Seite tun, oder verwenden Sie Lua-Server-Seite. –