事前定義されたTTLを使用して、イベントIDの重複排除のためのキャッシュとしてAerospikeを使用したかったのです。重複排除キャッシュとしてのAerospike
ユースケースは非常に簡単です:受信したすべてのイベントについて、このイベントIDがキャッシュに存在するかどうかを確認したいと思います。そうであれば、TTLをリセットし(レコードに触れる)、このイベントをアプリケーションで詐欺としてマークします。そうでなければ、このIDを挿入するput操作を行います。
は、私たちが行うことを計画していることは以下の通りです:私たちは保存したい唯一のことは、IDがあるため
(i)は、単一のレコードの名前空間を設定します。イベントIDをキーとして使用し、対応する値としてNullValueを格納します。 (キー値以外のものは本当に必要ないので)
(ii)重複チェックでは、最初にclient.exists()をチェックしてから書き込みポリシーでRecordExistsAction.REPLACEを使用してput操作を行います(これはパフォーマンスが最適化されているためです)。これらの操作は両方とも、アトミック性のための操作()ブロックで呼び出されます。
しかし、我々は次に関するいくつかのクエリた:
(I)で動作ブロックについては、私たちがしたい、このチェックとトランザクションセットは非常に一般的なユースケースのようです。よりクリーンな方法でこれを実現するAPIはありますか? (何も見つかりませんでした)
(ii)1つのビンも絶対に必要ですか?キーと対応する値は保存しないでください。私はキー値が保存されておらず、Aerospikeはダイジェストだけを保存していますが、exist()が気にする唯一のものなので、余分なビンストレージオーバーヘッドを取り除く方法はありますか?
ありがとうございました!