0

タイムスタンプに基づいて memcached 名前空間を無効にしようとした人はいますか? たとえば、API サービスをホストする tomcat サーバーのタイムスタンプである memcached 名前空間が必要です。名前空間が (定数ではなく) 変数になり、サーバー起動のタイムスタンプが保持されるように、メソッド呼び出しに注釈を付ける必要があります。

@ReadThroughAssignCache(namespace = "api_divisions_", assignedKey="allDivisions")
public List<Division> getAllDivisions()
{
    List<Division> all = (List<Division>)getHibernateTemplate().find("from Division");
    return all;
}

次に、サーバーが起動するたびに、このメソッドの名前空間をサーバーの起動時間に動的に設定する必要があります。

更新 - javaassist と動的注釈を使用してこれを行うための回り道があることは知っていますが、より良いアプローチが必要でした。

-ゴッツ

4

1 に答える 1

1

名前空間は常に定数です。変数は使用できません。私が理解しているように、サーバーの起動時間を使用してキャッシュキーを作成したいと考えています。それを行う方法は少なくとも2つあります。最初:使用@ReadThroughSingleCache

@ReadThroughSingleCache(namespace = "api_divisions_allDivisions")
public List<Division> getAllDivisions(@ParameterValueKeyProvider long startup)
{
  List<Division> all = (List<Division>)getHibernateTemplate().find("from Division");
  return all;
}

2 番目:各キャッシュ キーにタイムスタンプを追加できるカスタムCacheKeyBuilderを使用します。

サーバーの起動前に古い値を保存する必要がありますか? そうでない場合、単純な解決策は、常に同じキャッシュ キーを使用し、サーバーの起動時に memcached を消去することです。

于 2012-05-29T17:52:20.653 に答える