0
Я новичок в Redis, и я экспериментирую с транзакциями Redis, и я хочу использовать транзакции Redis в следующем сценарии. Необходимо знать, если это осуществимо для этого:Операция транзакции Java Redis (jedis) и отсортированный набор
- Start Transaction.
- Прочтите 10 лучших элементов из отсортированного набора.
- A 'for loop' для каждого из элементов, чтобы что-то сделать.
- Выполнение.
Я пробовал следующий код, но он не работает, поскольку я делаю <Response>.get()
перед выполнением транзакции.
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.
Есть ли способ обойти это?
Вы посмотрели, как сделать это redis-site с Lua и EXEC? –
Да, это хак, который я сейчас пытаюсь сделать. Был надеется получить что-то, используя Pipelining and Transactions. – face
Поскольку вам нужны данные, чтобы иметь возможность перебирать их, вам придется либо сделать это в два этапа на стороне клиента, либо использовать сервер Lua. –