5

memcached、velocity、sharedcacheのような、名前だけでなくコンテンツにタグを付けることができる、またはアイテムを相互に関連付けることができる分散キャッシュシステムがあるかどうかを知りたいので、1つのアイテムのキャッシュを無効にするとまた、関連するアイテムも無効にします。

例えば。同じデータを参照する2つのページがあり、そのデータが変更された場合、2つの参照ページのキャッシュを無効にします。

  • それとも、これは開発を懇願するプロジェクトの1つへの追加ですか?:)

編集:私はasp.netにいます

4

3 に答える 3

3

依存データの削除は、memcachedのcas(チェックアンドセット)操作を使用して実行できると思います。各値には一意のID(シリアル)があります。キーごとに、データのシリアルを含む別のkey.dependentsと、すべての依存関係のキーを格納します。

扶養家族を追加するときは、

dependents, dep_serial = fetch(key+".dependents")
data, serial = fetch(key)
if serial != dependents[0]:
    # somebody changed the actual data
    start_over
generate_and_cache_dependent(dep_key, data)
dependents.append(dep_key)
if not cas(dependents, dep_serial):
   # somebody changed dependents
   start_over # can avoid regenerating the data if they are still at serial

アイテムを無効にするときは、

dependents, dep_serial = fetch(key + ".dependents")
serial = update(key, new_data)
for dkey in dependents[1:]:
    delete(dkey)
dependents = [serial]
if not cas(dependents, dep_serial):
    start_over

競合する書き込みが存在する場合でも、1人のライターが常に「通過」するため、これらのアルゴリズムは最終的に終了します。

于 2009-09-04T11:11:51.207 に答える
0

依存関係の実装は非常に困難ですが、共有キャッシュ(http://www.sharedcache.com || http://sharedcache.codeplex.com)の他のすべての機能がキャッシュのニーズに適合する可能性があります。

よろしく、ロニ

于 2009-09-08T06:50:47.837 に答える
0

Velocityは、各タグが文字列であるタグ付けをサポートしています。オブジェクトは、タグまたは複数のタグ(「調味料」および「無料配達」など)で取得できます。

ただし、Velocityは依存関係をサポートしていません-IIRC Velocityチームは、依存関係はv1には含まれないと述べています。

于 2009-09-06T21:43:24.617 に答える