ソース サイトと国に応じて http クライアントをリダイレクトするシステムを作成したいと考えています。それらをどこにリダイレクトするかを決定するために、ルールのリストがあります。1 つのルールは次のようになります。
"id": 1,
"sourceSites": [ 1, 2, 3, 4 ],
"countries": [ "US", "UK", "DE" ],
"amount": 1000,
"url": "http://www.buyer2-url1.com"
そのようなルールは数百ある場合があります。
各ルールを保存するには、Redis ハッシュ: ルール: 金額 URL を使用する予定です
訪問者がシステムに来たときに、sourceSite と訪問者の国でルールをフィルタリングしたいと考えています。フィルターを実装するには、Redis セットを使用して sourceSites と国のインデックスを作成する予定です。
sourceSite:<sourceSiteID> rule:<id1> rule:<id2> ...
country:<countryCode> rule:<id1> rule:<id2> ...
country=UK と sourceSiteID=5 からの訪問者がいる場合、2 つのセットを交差させるだけです。
SINTER sourceSite:5 country:UK
理解できないのは、ルールを削除する必要がある場合 (たとえば、トラフィックの量がルールに必要な量を超えた場合) はどうすればよいですか?
すべてのセットを再作成して、sourceSites と国の新しいインデックスを作成する必要がありますか? しかし、インデックスがまだ準備できていないときに訪問者が来た場合はどうなるでしょうか?
または、sourceSites のリストと国のリストを含むルールごとにさらに 2 つのセットを保存する必要があるので、インデックスのすべてのセットを見つけて、それらからルールを削除できますか?