Я немного запутался в разнице между транзакцией 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 или есть идеи, как их реализовать?