Документы на redis.io на RPUSH
и LPUSH
неясно, сохраняются ли эти операции O (1) или трансационные операции при нажатии нескольких элементов. Например, если два клиента выполняют RPUSH
в том же списке с несколькими элементами, могут ли их элементы перемежаться и, следовательно, не соответствовать порядку? КомментарийМожет ли RPUSH и LPUSH участвовать в гонке Redis?
Тадман на его ответ очистил это вверх лучше для меня: Can RPUSH and LPUSH in Redis race?
Таким образом, каждая команда будет поступать в случайном порядке, то есть вы не можете гарантировать, что RPUSH 'a' произойдет до RPUSH' b', но однопоточный дизайн Redis гарантирует, что элементы 'a' не перемежаются с элементами из 'b'? То есть, результаты являются либо 'ab', либо' ba', но не слиянием элементов 'a' и' b'? – sabrehagen
Да, в принципе невозможно, чтобы две операции конфликтуют напрямую, но так работает большинство баз данных. Не забывайте, что вы можете использовать несколько элементов «RPUSH», и одна команда применяется атомарно, только несколько команд будут чередоваться и только если они не инкапсулированы в оператор 'MULTI'. – tadman