Eek. Locking the entire data set to perform transactions? Isn't that so... MyISAM? Does rolling the transaction back work? The optimistic lock is not a great solution either: instead of deadlocking while waiting for a lock to be released, you are now stuck in a while (!saved) loop. Imagine two web pages trying to update the same resource at the same time. Also this part of the config: save 900 1 save 300 10 save 60 1…
Maybe not, but I found the docs in about 10 seconds. http://redis.io/topics/persistence
Now I clearly state in the doc that transactions are reflected also in the append only file, so there is no chance of partial reply.
Transactions are also applied to the master -> slave link, so also slaves will either have the full transaction or nothing.
Thanks to @garybernhardt on twitter for noticing this problem.