2017-05-07 1 views
2

부적절한 레디 스 데이터베이스 :나는 3 일을 담당하는 Node.js를 API를 가지고 디자인

  • 몇 가지 기준에 따라 일치하는 구매자의 제안을 찾기 ID
  • 와 구매자를 얻기 구매자
  • 등록을 나는 레디 스에 새로 온 사람 때문에

세부 here

, 나는 역 rted과 같이 구현 :

  1. JSON.stringify 구매자와 SET
  2. 에 보관 저장 명령 집합으로 모든 구매자의 이벤트 (이 최고의 가치와 서비스를 필요로하는 세 번째 엔드 포인트입니다) - 이 집합에는 해시 이름을 나타내는 문자열이 포함되어 있습니다.
  3. 그런 다음이 해시에는 특정 값을 가진 집합의 이름을 나타내는 문자열과 이러한 조건이 충족 된 후에 사용자가 리디렉션되는 위치가 저장됩니다 (buyer1_devices, buyer1_hours 등)

자, 여기에 문제가 있습니다 :

GET/ROOT 작업을해야합니다. 필자가 제공 한 GitHub 페이지에서 설명한 것처럼 타임 스탬프, 장치 및 상태의 세 가지 매개 변수가 있습니다. 모든 세트를 탐색하고 사용자를 리디렉션 할 적절한 위치를 얻어야합니다. 위치는 해시에 저장되지만 모든 세트를 탐색해야합니다. 이것은 아마도 나쁜 구현 일 것이기 때문에 어디에서 잘못 되었는가? 이것을 구현할 것인가?

  • 노드가 아니라 재발행 문제입니다. Redis에서 구현하는 방법에 대한 지침이 필요합니다. 그런 다음 Node에 코드를 작성할 준비가됩니다.

사전

+0

코딩상의 문제를 해결하는 데 도움이되지 않겠습니까? –

+0

@ItamarHaber 누구든지 상담 할 수있어서 자유입니다. 그것은 도전이 아니며, 직업에 대한 입국 문제입니다. –

+0

Okie dokey - ethics quenched, 도움이 될만한 답변을 원합니다. –

답변

2

레디 스의 첫 번째 규칙에 감사 : 당신이 그것을 읽고 싶은처럼 데이터를 저장합니다.

/route 쿼리에 응답하려면 구매자의 오퍼 - 상태 및 장치의 두 가지 속성에 대해 "필터링"이 필요합니다. 그 고양이를 껍질을 벗기는 방법은 여러 가지가 있습니다. 그래서 여기에 있습니다 : 제안을 위해 많은 Sorted Sets를 사용하십시오.

이러한 제안 된 정렬 된 세트 키 이름은 <device>:<state>과 같을 수 있으므로 (자식에 제공된 예제는 desktop:CA 키에 추가됩니다).

쿼리하려면 경로의 인수를 사용하여 키 이름을 작성한 다음 정기적으로 진행하여 가장 높은 점수를 얻은 제안을 찾아 해시로 구매자의 세부 정보를 해결하십시오.

이제 그 일을하십시오!

+0

이것은 정확히 내가 필요한 것입니다. 그래서 제 디자인은 생각했던 것처럼 가난합니다. 그래서 많은 세트를 만드는 것이 괜찮습니까?나는 관계형 데이터베이스에서 왔습니다. 그래서 이것은 저에게 매우 이상합니다. –

+1

당신의 상식을 사용하는 것이 합리적입니다.) 나는 또한 그 길에서 왔으므로 당신이 의미하는 바를 알고 있습니다. Redis의 두 번째 규칙 : 비정규 화는 더러운 단어가 아닙니다 (이 경우에도 사용자는 그렇게하지 않습니다). –

관련 문제