Transações e declaração de relógio no Redis

Você poderia por favor me explicar seguindo o exemplo do "The Little Redis Book":

Com o código acima, não poderíamos implementar nosso próprio comando incr, já que todos eles são executados juntos assim que exec é chamado. Do código, não podemos fazer:

redis.multi() 
current = redis.get('powerlevel') 
redis.set('powerlevel', current + 1) 
redis.exec()

Não é assim que as transações do Redis funcionam. Mas, se adicionarmos um relógio ao powerlevel, podemos fazer:

redis.watch('powerlevel') 
current = redis.get('powerlevel') 
redis.multi() 
redis.set('powerlevel', current + 1) 
redis.exec()

Se outro cliente alterar o valor do powerlevel após chamarmos o relógio, nossa transação falhará. Se nenhum cliente alterar o valor, o conjunto funcionará. Podemos executar este código em um loop até que ele funcione.

Por que não podemos executar um incremento na transação que não pode ser interrompido por outro comando? Por que precisamos fazer uma iteração e esperar até que ninguém mude o valorantes transação começa?

questionAnswers(1)

yourAnswerToTheQuestion