我想製作一個系統,根據它們的源站點和國家來重定向http客戶端。 要決定在哪裏重定向他們,我有一個規則列表。一條規則可以是這樣的:過濾Redis哈希條目 - 從哈希或從集合中刪除條目
"id": 1,
"sourceSites": [ 1, 2, 3, 4 ],
"countries": [ "US", "UK", "DE" ],
"amount": 1000,
"url": "http://www.buyer2-url1.com"
可以有幾百個這樣的規則。
要存儲的每個規則我打算使用Redis的哈希值: 規則:量網址
當訪問者進來到我要篩選由sourceSite和訪問者的國家規則體系。 要實現一個過濾器,我打算創建一個使用Redis的sourceSites和國家的指數設置:
sourceSite:<sourceSiteID> rule:<id1> rule:<id2> ...
country:<countryCode> rule:<id1> rule:<id2> ...
當我有從國家=英國和sourceSiteID = 5我只是讓兩個集合交集訪問者:
SINTER sourceSite:5 country:UK
我不明白的是當我需要刪除一條規則(例如,當流量超過規則所需的數量)時該怎麼辦?
我應該重新創建我的所有套件以創建SourceSites和國家的新索引嗎?但是如果訪問者在索引還沒有準備好時就會發生什麼呢?
或者我需要爲sourceSites和國家列表的每個規則存儲另外兩組,所以我可以找到索引的所有集合並從它們中刪除規則?