2017-01-11 7 views
0

私はRedisをキャッシュとして使用し始めています。私は自分のアプリケーションに最適な構造がわかりません。全体的な構造は以下の通りです:データソース、ユーザ、クエリを含むRedisキャッシュ

enter image description here

私が行うことができるようにする必要があるいくつかのものがあります:データソース(すべてのユーザーとすべてのクエリー)のためにすべてをフラッシュ

  1. 特定のユーザーのすべてをフラッシュします(e.x:ユーザー1を削除し、データソース1とデータソース2からクエリを削除する必要があります)。

ツリーに表示されているすべては、特定のデータソースでユーザーのクエリを実行した結果にアクセスするためのキーの一部です。私はRedisには新しく、ハッシュとセットの使用の間を行き来してきました。

オプション1(セット):私はuser1のかDataSource1一致するすべてのキーを見つける必要がありますので

DataSource1 => user1, user2, user3, user4 
DataSource1:user1 => Query1, Query2, Query3 
DataSource1:user1:Query1 => Results 

フラッシング物事は高価です。

部分オプション2(ハッシュ):

users:user1 DataSource1:Query1 Results1 DataSource2:Query1 Results2 

データソースやユーザーがここで働いだろうか紅潮まだわかりません。

他にも考えている人はいますか?

答えて

1

情報に基づいて、私はDataSource - > Usersとユーザー - >クエリのハッシュでセットを持っています。その方法は、ユーザーをフラッシュするだけで、ハッシュを削除するだけで、データソースをフラッシュする(おそらく少ない)のは、セットをループしてユーザーを削除してから、データソース - >ユーザーセットを削除することです。

セットの最初のオプションを使用すると、ユーザーからクエリをフラッシュするたびに多くの操作が実行されますが、実際にはデータにアクセスしているかどうかによって異なります。

また、ユーザーごとに格納するクエリの数によっては、ハッシュがセットよりも効率的です。

+1

私はこの解決策が好きです。それはきれいで簡単です。ありがとう! –

関連する問題