2014-02-05 2 views
0

레일즈 앱에서 자동 완성을 위해 soulmate 보석을 사용하고 있으며 발생하는 큰 문제는 클라이언트에서 Redis 서버까지의 쿼리 대기 시간입니다.레일즈 : 여러 유형의 soulmate gem 파이프 라이닝

보석 코드에서 빠른보기는 당신이 볼 수 있듯이, Soulmate::Matcher의 새로운 인스턴스가 각각 type (즉, "위치", "사용자", "장소"등 생성됩니다

# in lib/soulmate/server.rb#search 
types.each do |type| 
    matcher = Matcher.new(type) 
    results[type] = matcher.matches_for_term(term, :limit => limit) 
end 

보여줍니다 .) matches_for_term 메서드를 사용하여 Redis 서버에 쿼리합니다. 즉, 한 번에 3 가지 유형을 쿼리하려면 6 개의 핸드 셰이크가있게됩니다. 을 생성시 복수 type 초를 허용하고 파이프 라인 쿼리를 통해 redis 서버에 쿼리하려고합니다. 코드 변경/재정의는 어떻게해야합니까? 내가 전체 보석을 다시 써야 할 것처럼 보입니다.

답변

0

결국 나는 parallel 보석을 사용하고 쿼리를 병렬화했습니다.

이것은 끈적 거리며 필요한 것보다 더 많은 악수를 여전히 사용하고 있지만, 지금은 효과가 있습니다.

관련 문제