Redis を使用して、コマンドのアトミック シーケンスを実行したいと考えています。つまり、シーケンスの実行中に、他のクライアントがデータベースで変更を実行しないことを保証する必要があります。
書き込みコマンドのみを使用した場合はMULTI
、 andEXEC
ステートメントを使用して、トランザクションを使用して原子性を保証できます。ただし、トランザクションで読み取りコマンドも使用したいと考えています。したがってMULTI
、読み取りコマンドもキューに入れられているため、使用できません!
基本的に、アトミックな方法で、次のことを行う必要があります。
- データベースから読み取り
x
、 - に基づいて、データベース
x
に保存f(x)
します。
1. と 2. の両方が、単一のアトミック トランザクションの一部である必要があります。
それを行う簡単な方法はありますか?