我想创建一个系统,根据其源站点和国家/地区重定向 http 客户端。为了决定将它们重定向到哪里,我有一个规则列表。一条规则可能如下所示:
"id": 1,
"sourceSites": [ 1, 2, 3, 4 ],
"countries": [ "US", "UK", "DE" ],
"amount": 1000,
"url": "http://www.buyer2-url1.com"
可以有数百个这样的规则。
为了存储我打算使用 Redis Hashes 的每条规则: rule: amount url
当访问者进入系统时,我想按 sourceSite 和访问者所在的国家/地区过滤规则。为了实现过滤器,我计划使用 Redis 集创建 sourceSites 和国家/地区的索引:
sourceSite:<sourceSiteID> rule:<id1> rule:<id2> ...
country:<countryCode> rule:<id1> rule:<id2> ...
当我有来自 country=UK 和 sourceSiteID=5 的访问者时,我只是将两组相交:
SINTER sourceSite:5 country:UK
我不明白的是,当我需要删除规则时(例如,当流量超过规则的必要量时)我该怎么办?
我应该重新创建我的所有集合以创建源站点和国家/地区的新索引吗?但是,如果访问者在索引尚未准备好时来了怎么办?
或者我需要为每个规则存储另外两组源站点列表和国家列表,这样我就可以找到索引的所有集合并从中删除规则?