私は最近memcachedをかなり使用していますが、依存関係でやろうとしていることは、「そのまま」のmemcachedでは不可能であると確信していますが、クライアント側から処理する必要があります. また、データの複製はクライアントからではなくサーバー側で行う必要があります。これらは 2 つの異なるドメインです。(少なくとも memcached では、データ ストレージ ロジックが不足していることがわかります。ただし、memcached のポイントは、パフォーマンスを向上させるための極端なミニマリズムです)
データ レプリケーション (物理的な障害のあるクラスター ノードに対する保護) については、代わりにmembased http://www.couchbase.org/get/couchbase/currentを確認してください。
deps アルゴリズムの場合、クライアントで次のようなことがわかりました。特定のキーに対して、依存キーのリスト/配列を保持している疑わしい追加のキーがあります。
# - delete a key, recursive:
function deleteKey( keyname ):
deps = client.getDeps( keyname ) #
foreach ( deps as dep ):
deleteKey( dep )
memcached.delete( dep )
endeach
memcached.delete( keyname )
endfunction
# return the list of keynames or an empty list if the key doesnt exist
function client.getDeps( keyname ):
return memcached.get( key_name + "_deps" ) or array()
endfunction
# Key "demokey1" and its counterpart "demokey1_deps". In the list of keys stored in
# "demokey1_deps" there is "demokey2" and "demokey3".
deleteKey( "demokey1" );
# this would first perform a memcached get on "demokey1_deps" then with the
# value returned as a list of keys ("demokey2" and "demokey3") run deleteKey()
# on each of them.
乾杯