2012-07-30 2 views
0

은 시나리오입니다. 여기는 Blogger의 overviewstats 기능과 마찬가지로 액세스 통계 시스템입니다. 통계 데이터는 MySQL과 같이 데이터베이스에 영구 저장되며, 키 - 값 캐시 (현재 memcache)를 사용하여 액세스 카운트를 캐시하면 각 액세스는 캐시의 값만 업데이트합니다.캐시 값을 데이터베이스에 동기화하는 솔루션? 아래의

이제는 최신 카운트 값을 데이터베이스에 동기화하는 방법이 궁금합니다. 일반적인 해결책은 일정한 간격 후에 다시 쓰는 것이지만 충분한 공간이 없을 때 memcache가 항목을 버리면 일부 업데이트가 손실 될 수 있습니다. 그래서 더 좋은 해결책은 memcache가 JMS와 같은 메시지를 보낼 수 있다면 아이템을 버리고 그 아이템을 데이터베이스에 동기화 할 수 있다는 것입니다. memcache가이 기능을 제공하지 않는 것 같습니다. 다른 키 - 값 캐시가 이것을 할 수 있습니까? 더 좋은 해결책이 있습니까?

답변

0

Memcached는 캐시이므로 하나로서 사용해야합니다. memcached에서 액세스 횟수를 업데이트 할 때 업데이트를 대기열에 추가하여 데이터베이스에 비동기 적으로 기록 할 수 있도록해야합니다. 이렇게하면 캐시에서 빠진 카운트를 데이터베이스에서 다시로드 할 수 있습니다.

나는 memcached 대기열에 들어있는 항목을 버리는 것이 좋지만 성능 고려 사항 때문에 주 프로젝트에서 발생하지는 않을 것입니다.

+0

감사합니다. 실제로 큐를 사용하여 비동기 적으로 데이터베이스를 업데이트하고 있습니다. 난 그냥 더 나은 솔루션을 각각의 액세스를 피하기 위해 데이터베이스를 업데이 트하는 피할 필요가 없다고 생각하고 있어요 – situch