私は Simple Spring Memcached を理解しようとしていますが、以下に記載されていることに固執しています。
違いは何ですか:
- @ReadThroughSingleCache、@ReadThroughMultiCache、および @ReadThroughAssignCache
- @UpdateSingleCache、@UpdateMultiCache、および @UpdateAssignCache
- @InvalidateSingleCache、@InvalidateMultiCache、および @InvalidateAssignCache
また、更新はどのように機能しますか。特定のキーを使用して名前空間を更新すると、同じ名前空間内で同じキーを使用してすべての read*cache メソッドが実行されますか。はいの場合、複数のサーバー アプリケーションで機能します。
たとえば、特定のシナリオでは、ユーザーのポイント (何か) がキャッシュされます アプリケーション 1
@ReadThroughSingleCache(namespace="userPoints")
public Integer getUserPoints(@ParamterKeyValueProvide String userId){
}
別のアプリケーション (バックグラウンド スケジューラの可能性があります) からの別のシナリオでは、次のメソッドが呼び出されます: アプリケーション 2
UpdateThroughSingleCache(namespace="userPoints")
public void updateUserPoints(@ParameterKeyValueProvider String userId, Integer newPoints)
{
//make database update
}
私の質問は、namespace("userPoints") が最初に 50 ポイントとして userId("1234") のキャッシュ エントリを持っていて、更新メソッドが ("1234",100) で呼び出された場合、キャッシュはどのようにしてそのロジックを知るのでしょうか? 「1234」のエントリは、100 ポイントで更新する必要があります。
戻り値を使用して古い値で更新する必要があります(戻り値の型を変更する必要があります)。または、更新が「ライトスルー」の場合は、読み取りメソッドを db ルックアップの直接ロジックで呼び出してから更新する必要があります。キャッシュ...しかし、アプリケーション2はアプリケーション1に更新をどのように通知しますか。