2016-06-12 7 views
1

キャッシュにオブジェクトのコレクションを格納しようとしています。この場合キャッシュにオブジェクトコレクションを格納するアプローチまたは戦略

{ 
    "name": "Dep1", 
    "employees": [{ 
     "id": 1, 
     "name": "emp1", 
     "profilePic": "http://test.com/img1.png" 
    }, { 
     "id": 2, 
     "name": "emp2", 
     "profilePic": "http://test.com/img2.png" 
    }, { 
     "id": 3, 
     "name": "emp3", 
     "profilePic": "http://test.com/img3.png" 
    }, { 
     "id": 4, 
     "name": "emp4", 
     "profilePic": "http://test.com/img4.png" 
    }] 
} 

従業員1が彼のプロフィール画像を変更した場合、私は、データの一貫性を維持するために、完全なキャッシュされたオブジェクトを無効にする必要があります。 このアプローチでは、従業員のための更新があるたびに完全なオブジェクトをクリアする必要があるたびにキャッシュを弱体化させます。

これを最適化するために、より良いアプローチや設計がありますか?

おかげ

+0

各オブジェクトを別のキーに格納し、キーごとに無効化するだけです。または[MongoDB](https://docs.mongodb.com/manual/tutorial/)を使用することを検討してください – thepirat000

+0

これをMongoDbにどのように格納すればこの問題を解決できますか? –

答えて

0

が、これはRedisの問題であることを仮定しますか?私はそれが一般目的であると仮定します。

IDのみを取得し、各エントリをIDで要求します。

要求ごとのエントリのリストを単なるIDのリストとして格納します。

リストをキャッシュし、各エントリをキャッシュできるようになりました。

IDだけを取得するので、データの非常に単純な超効率的なインデックスを作成できます(データは常にIDであるためインデックスから直接フェッチされます)。更新は、リストのキャッシュを無効にする必要がある場合としない場合があります。エントリキャッシュを無効にするだけで十分です。リストを無効にしてもエントリキャッシュをあまり無効にすることはあまりありませんので、パフォーマンスはかなり良いでしょう。

関連する問題