2013-01-11 3 views
1

gem "redis-store"을 내 레일 앱의 캐시 저장소로 사용하고 싶습니다. memcached redis와 달리 사용되지 않는 키는 정리하지 않지만 각 키의 수명을 제한하기 위해 옵션을 통해 각 키에 EXPIRE 명령을 사용할 수 있습니다.Redis에서 캐시의 최적의 expire_in 값

그럼 내 모델의 cache_key (idupdated_at 포함)을 캐싱에 사용되는 redis 키로 사용하고 싶습니다. 따라서 모델이 업데이트 될 때 새 캐시 키가 생성되고 이전 키는 사용되지 않습니다.

그래서 어떤 만료 시간을 선택해야합니까? 너무 작게 설정하면 캐싱의 이점을 없애줍니다. 너무 길면 사용하지 않는 데이터로 채우기 때문에 성능이 저하 될 수 있습니다. 황금률은 어디에 있습니까?

+1

캐시 만료는 프로그래밍에서 유일한 단 두 가지 중 하나입니다. –

답변

1

Redis의 LRU 만료 전략을 사용하여 Redis가 가장 최근에 사용하지 않은 키 자체 만료되도록 제안합니다. 이렇게하면 키 만료에 대해 걱정할 필요가 없습니다.

제안 된대로 모델의 cache_key를 사용하면 모델이 변경 될 때 실제로 새 키가 생성됩니다. 해당 모델의 '이전'키는 귀하의 견해에 의해 더 이상 사용되지 않으며, Redis는 결국 해당 키를 만료합니다.

Redis를 LRU 저장소로 구성하는 방법은 http://redis.io/topics/config을 참조하십시오.

+0

멋집니다! 새로운 redis 기능입니까 아니면 과거에 뭔가 빠졌습니까? – MikDiet

0

확실히이 앱에 따라 다릅니 까? 정말 비싼 페이지라면 가능한 한 거의 다시 계산하지 않으려 고합니다. 그러나 빠르게 변하면 옵션이 없습니다.

개인적으로 실험하겠습니다. 일부 숫자를 선택하고 성능에 어떤 영향을 주는지 확인하십시오. 처음에는 오류가 발생했습니다 (데이터베이스를 신뢰합니다,이 경우 Redis). 문제가있을 경우 조정하십시오.