나는 처리하려고하는 ~ 200 명의 구성원이 들어있는 ~ 60 개의 정렬 된 집합을 가지고 있습니다. 이전에는 Redis (Lua) 서버 측 스크립트를 만들었지 만 요청의 큰 (O) 시간 값은로드가 안되는 시간이었습니다.Sinatra의 캐시 변수
지금은 Ruby/Sinatra로 처리를 오프로드하고 비효율적 인 모든 요청에 대해 결과를 새로 고치려고합니다. 아래의 코드가 주어지면 Sinatra에서 "점수"결과를 캐싱 할 수있는 방법이 있습니까? 그래서 모든 요청에 대해 Redis로부터 끌어낼 필요가 없습니까?
global = redis.smembers("id_list")
i=0
scores = redis.pipelined do
global.each do |key|
redis.zrange("user:#{global[i]}",0,100,:with_scores => true)
i+=1
end
end
결과를 캐시하지 않는 것 같습니다. 위 코드를 코드에 넣었습니다. 요청이 들어올 때마다 Redis에 대한 호출을 계속합니다. – tjrburgess
각 요청 전에 Sinatra를 산탄 총이나 앱을 다시로드하는 프로그램으로 실행하고 있습니까? 방금 위 코드를 사용하여 테스트를 수행하고 redis 호출을 puts로 바꾸고 첫 번째 요청의 get_scores 함수를/score – mattwise