2011-08-12 4 views
5

SEO 친화적 인 URL을 키로 사용하고 불쾌한 쿼리 문자열 URL을 값으로 사용하여 동적 데이터베이스를 유지하려고합니다. 요청이 왔을 때 Nginx에서 직접 호출하고, 불쾌한 쿼리 문자열 URL을 가져 와서 Apache에 전달하여 내용을 제공하고 싶습니다.Redis를 사용하여 nginx에 URL 맵 제공

평평한지도 파일에 대해서 생각해 봤지만 꽤 큰 (200,000+ 항목) 것이므로 cron 작업이나 다른 것으로 자주 업데이트해야합니다 ... 매우 우아하지는 않습니다.

내 생각이 같은 것입니다 :

map $uri $new { 
    # instead of this... 
    # include /path/to/the/nginx_map.txt; 
    # I want to do this... 
    redis_magic_thing GET $uri; 
} 

내가 Nginx에 대한 HttpRedis 모듈을 체크 아웃되었지만 예제는 정말 드문 드문하고 캐시 된 콘텐츠를 제공하는 방향으로 기어드 것 같다. 나는 또한 Redis2 모듈을 체크 아웃했지만, 과도한 것처럼 보입니다. 난 그냥 평범한 구식 명령을해야합니다.

HttpRedis 모듈을 사용하여 Redis로 바로 연결할 수 있습니까? 그렇다면 그러한 구성은 어떻게 생겼을까요?

미리 도움을 주셔서 감사합니다.

+1

Nginx는 이벤트 폴링을 사용하고 Redis는 단일 스레드입니다. 둘 다 100 % 메모리가 있어야하고 일정 시간 조회가 있지만 Nginx는 단일 스레드가 아니기 때문에 20k RPS 이상으로 가고 싶다면 Redis를 사용하는 것보다 훨씬 빠를 것이라고 말하고 싶습니다. 따라서 데이터가 자주 변경되지 않고 Apache에서 URL 매핑을 처리하지 않는 좋은 이유가있는 경우 맵에 파일을 저장하고 inotify를 사용하여 업데이트 후 nginx config를 다시로드하는 것이 좋습니다. – ColinM

답변

1

HttpRedis가 캐싱에보다 적합하도록하시는 것이 옳습니다. redis2 모듈을 사용하면 더 효과적입니다. 실행할 필요가있는 명령은 redis2가 제공하는보다 일반적인 경우에 더 잘 제공됩니다.

관련 문제