2013-04-25 4 views
2

현재 Rails에서 카운터 캐시 컬럼을 사용하고 있지만, 연관 (등급)에 대해 더 복잡한 쿼리를 수행하기 시작했습니다. 성능상의 이유로 데이터를 Redis로 옮깁니다.Redis and Rails 카운터 캐시 컬럼

제 질문은 카운터 캐시 열은 Redis의 모든 데이터를 저장할 때 여전히 관련이 있습니까, 아니면 Redis가이 접근법을 쓸모 없게 만들고 (단지 Redis 저장소에서 계산을 수행하는 것입니까?) 제 질문입니까? 의 post.ratings_count는 단순히 (이후 이미로드 될 것이다) 쿼리를 수행하지, 속성을 가져옵니다

post.ratings_count # cache_column, table in sql database 
$redis.scard("post:123:ratings") 

코스 :

나는 그것이 내려 오는 것 같아요. 내 유일한 관심은 $redis.scard이 Redis 저장소에서 '쿼리'를 수행한다는 것입니다. 무시할 만합니까?

답변

3

SCARD 명령 성능에 대해 걱정할 필요가 없습니다.

redis SCARD 명령에 시간 복잡성 O (1)가 있습니다. 즉, redis에 비용이 거의 들지 않습니다.

전체 집합을 redis로 저장할 수 있으면 캐쉬 카운트를 갖는 것이 더 이상 유용하지 않습니다.

불행히도 당신은 항상 redis (redis storage는 RAM에 들어 있어야합니다)에 모든 것을 저장할 충분한 공간이 없으므로 캐시 된 카운트 열을 갖는 것이 여전히 합리적입니다.

+0

설명해 주셔서 감사합니다. –

+0

@Tommaso Barbugi 저는 Redis를 처음 접했습니다. 캐시 된 개수를 유지하라는 제안을했다면 매번 해당 열을 업데이트한다는 의미입니다. 따라서 게시물을로드 할 때 카운트 필드도 포함하기 때문에 redis를 사용하면 어떤 이점이 있습니까? – Samnang