Как реализовать конвейерные запросы Redis с помощью Booksleeve?

Я немного запутался в разнице между транзакцией Redis и конвейером и, в конечном счете, в том, как использовать конвейеры в Booksleeve. Я вижу, что Booksleeve поддерживает функцию транзакций Redis (MULTI/EXEC), но в его API/тестах нет упоминания о функции конвейеризации. Однако в других реализациях очевидно, что существует различие между конвейерами и транзакциями, а именно в атомарности, о чем свидетельствует приведенная ниже версия redis-ruby, но в некоторых местах термины, похоже, используются взаимозаменяемо.

реализация redis-ruby:

r.pipelined {
  # these commands will be pipelined
  r.get("insensitive_key")
}

r.multi {
  # these commands will be executed atomically
  r.set("sensitive_key")
}

Я бы просто использовал MULTI/EXEC вместо этого, но они, похоже, блокируют всех других пользователей до завершения транзакции (в моем случае это не нужно), поэтому я беспокоюсь об их производительности. Кто-нибудь использовал конвейеры с Booksleeve или есть идеи, как их реализовать?

6
задан bosgood 5 December 2011 в 19:54
поделиться