2017-05-07 52 views
2

我有一個Node.js的API,負責三件事情:不適當的Redis數據庫設計

  • 註冊買家
  • 掌握ID
  • 買方根據某些條件查找匹配買家的報價

詳細here

由於我是新來的Redis,我STA rted這樣實現:

  1. JSON.stringify買家,並將其存儲與SET
  2. 存儲所有買家的報價爲有序集合(這是第三個端點,這需要具有最高價值的報價) - 此集合包含表示散列名稱的字符串
  3. 然後,該散列存儲的字符串代表具有特定值的集合的名稱以及在這些條件滿足後用戶將被重定向到的位置(buyer1_devices,buyer1_hours等)

現在,這裏是問題:

我需要GET /路由工作。正如我提供的GitHub頁面所述,我有3個參數:時間戳,設備和狀態。我必須瀏覽所有集合並獲取將用戶重定向到的適當位置。該位置存儲在散列中,但我必須瀏覽所有集合。既然這可能是一個糟糕的實現,那麼它在哪裏出了問題並且要去實現呢?

  • 請注意,這是一個redis問題,而不是節點之一。我需要說明如何在Redis中實現這一點,然後我將準備在Node中對其進行編碼。

預先感謝您

+0

不幫你完成一個編碼挑戰被認爲是促進作弊嗎? –

+0

@ItamarHaber我可以隨意諮詢任何人,這就是他們所說的。這不是一項挑戰,更多是一份工作的入門問題。 –

+0

Okie dokey - 道德規範被扼殺,寫下我希望會是一個有用的答案。 –

回答

2

Redis的第一條規則:存儲數據,就像你想讀它。

要回答/route查詢,您需要對來自買方的報價 - 狀態和設備的兩個屬性進行「過濾」。有不止一種方法來給那隻貓加皮膚,所以這裏有一個:爲這些優惠使用很多分揀套裝。

每個這樣的報價分揀集鍵名稱可能如下所示:<device>:<state>(因此git中提供的示例將被添加到關鍵字desktop:CA)。

要進行查詢,請使用路由的參數來組成您的密鑰名稱,然後定期繼續查找得分最高的報價並在哈希中解析買方的詳細信息。

現在去找那份工作吧!

+0

這正是我所需要的。所以,我的設計很差,因爲我認爲它是。所以可以做很多套?我來自關係數據庫,所以這對我來說很奇怪。 –

+1

在理性的範圍內是可以的 - 使用你的常識;)我也來自這條路,所以我知道你的意思。 Redis的第二條規則:非規範化不是一個骯髒的詞(在這種情況下,你甚至沒有這樣做)。 –