私はconfig.ymlファイルのDoctrineCacheBundleに複数の名前空間を設定できることを知っています。しかし、1つのドライバを使用できますが、複数の名前空間を使用できますか?DoctrineCacheBundle cacheDriverで複数の名前空間を使用するには?
私のアプリでは、すべてのエンティティのすべてのクエリをキャッシュしたい場合があります。問題は、作成/更新アクションを実行しながらキャッシュをフラッシュすることです。キャッシュされたクエリの一部だけをフラッシュしたい。私のアプリは複数のクライアントによって使用されます。したがって、クライアントがArticle Entityなどのデータでsthを更新すると、このクライアントのキャッシュのみをArticleに対してのみクリアします。私は各クエリに適切なIDを追加し、手動で削除することができますが、クエリは動的に使用されます。 APIのモバイルアプリでは、DBがデータを返すバージョン番号を送信するので、どのIDが最後に使用されるのか分かりません。
ですから、クエリをしながらコントローラーで、その後、例えばSncRedisBundleに使用metadata_cacheためDoctrineCacheBundleで使用するように設定し、RESULT_CACHE、query_cacheとする意味を持つ幸運、 $ cache = $ this-> container-> get( 'redis_cache');でキャッシュします。 $ cache-> save( 'article_1'、$ article);このキーをKEYに保存してRedisに保存しますか? $ redis-> append( 'client_1'、 'article_1')のように。そして、更新を行うときに$ redis-> delete(array( 'key3'、 'key4'))で適切なキーを削除するだけです。 ? – Tom
そういうもの、そうです。結果キャッシュが必要かどうかわかりません。私はそれにいくつか問題があった。私は、メタキャッシュ、クエリキャッシュを使用し、私は自分で結果キャッシュを世話します。 –