序文#
Redis の学習中に、Redis のトランザクション機能がロールバックできないことに気づきました。つまり、トランザクションを実行する際に途中で何かエラーが発生した場合、トランザクションを前の状態に戻すのではなく、そのまま続行します。
え?え?トランザクションは何の役に立つの?原子性も一貫性もないじゃないか
資料を調べて考えた結果、少しまとめてみましたが、完全ではないかもしれません
分離性#
ロールバックはサポートされていませんが、並行環境での分離性があります。watch
を使用すると楽観的ロックのようなものが実現でき、最後のexec
時に競合をチェックします
シンプルで効率的#
Redis のコマンドを多く学んできましたが、ほとんどのコマンドはエラーを返さないことに気付きました。たとえ入力したキーが間違っていても、単にnil
を返すだけです。Redis のコマンド構文が間違っている場合や誤ったタイプのキーを使用した場合にのみエラーが発生するため、これらのエラーは開発時に発見されるはずです。
したがって、ロールバックがなくなったことで、Redis の内部はよりシンプルで効率的になり、パフォーマンスが向上します。
つまり、ロールバックをサポートする必要がなくなり、これにより Redis はよりシンプルで効率的になります