DBやKVSの楽観ロックと悲観ロックについて調べた
楽観ロック
- 参照時にロックをしない
- 仕組み : バージョンを保持しておき、バージョンが更新されていたら、その後の変更は
破棄される
- 同じリソースへの更新が、頻繁に発生しないことを想定したロック
- 変更が破棄されるため
リトライ
を考慮した設計にしなければならない - 主にアプリケーションレベルでかけることが多い
- Redisではこちらの機能が使える
悲観ロック
- 参照時にロックをする
- 仕組み : 参照時にロックをかけ、他のプロセスはそのロックが解放されるまで
待ち
が発生する - 同じリソースへの更新が、頻繁に発生することを想定したロック
- 主にDBレベルでかけることが多い