我在尋找儘可能高效的redis密鑰列表。我們可以在redis服務器上對此進行建模,但我們很喜歡這樣做,因爲這是解決問題的正確方法。讓我描述一下情況。如何在Redis中相交併找到不同的密鑰
假設一大組以Redis形式存儲爲「字符串」的「客戶」。
customer__100000
customer__100001
customer__100002
每個客戶都有不少屬性。那些將是他們居住的城市。每個城市也存儲在Redis中。
city__New York
city__San Francisco
city__Washington DC
通過不同的理線我會在最後一組客戶密鑰(相交集預過濾器)。一旦我有這些密鑰我需要找出我有內那些不同城市顧客。我的最終目標是獲得城市的名字,但是如果我可以得到鑰匙,那麼我可以把城市名稱也放在這裏。
爲了給出一個我在這裏談論的規模的想法,假設我們正在處理大約70個屬性(城市就是其中之一)的200-300k個客戶,並且每個屬性都在50-100000之間。我想盡可能保持高效。
有趣的想法。儘管我們最終將5萬個城市拉下來,然後有效地將所有50,000個添加到一個可能最終有100個條目的集合中,但給定一組50,000個客戶。我對這條路線的性能感到好奇,因爲管道已經關閉,數據備份了。 –
當然你可能指的是執行Lua腳本服務器端。 –
是的,絕對是使用Redis EVAL調用的Lua腳本。我估計即使有5萬個參賽作品也會很快。你可能想在if語句中用'EXPIRE'和'TTL'來記憶'distinct_set'鍵。我已經更新了Lua腳本,因此它使用Lua表格代替Redis列表中的城市。我認爲現在更容易理解。 – lastcanal