2010-05-23 4 views
7

memcached를 사용하여 mySQL 대신 세션을 저장하는 방법에 대해 생각했습니다. 처음에는 좋은 생각 인 것 같았습니다.memcached 세션에 대한 접근 방식

memcached 서버를 사용하는 장애 조치 부분에서는 memcached가 오프라인 상태가되면 내 세션이 작동을 멈추는 것을 걱정합니다. 그것은 확실히 내 사용자에게 영향을 미칠 것입니다.

다운 타임 발생시 보상 할 수있는 서버 풀을 제공하고 서버 풀에서 샤딩/일관된 해싱을 사용하는 등 장애 조치를 줄이기 위해 이미 활용 한 몇 가지 기술이 있습니다. 우리는 또한 사용자에게 뭔가 잘못되었다는 것을 알려주고 memcached 서버 장애 조치로 인해 쫓겨나는 경우 다시 로그인 할 수 있다는 점을 알리는 일종의 정상적인 성능 저하를 수행합니다.

memcached 서버에 세션을 저장할 때 사람들이 일반적으로 이러한 문제를 어떻게 처리합니까?

답변

3

db와 memcached를 모두 사용하여 오류 방지 방법을 만들 수 있습니다. memcached 객체가 메모리에 있는지 확인하고 다른 세션을 db에 저장 한 다음 memcache 인스턴스를 만듭니다. 로그 아웃/로그 아웃 할 때 그냥 확인, 그것은 ...

그래서 실패 할 경우, DB 확인, 최초의 memcached를 체크 ... /이 memcached를 제거 :

+0

스마트하십시오! 조금 더 많은 코드가 있지만 성능은 더 좋습니다. 나 좋아해! – Industrial

9

첫 번째로, 당신이 memcache에만 뭔가 넣으면, 당신은 그것을 잃어 버릴 것입니다. 그 밖의 모든 것에는 영구 저장 장치가 있습니다.

둘째, memcached는 자주 실패하지 않습니다. 디스크 플래터와 같은 움직이는 부분은 없습니다. 세션을 잃어버린 유일한 시간은 커널 업그레이드를위한 재부팅 때문이었습니다. 그러나 그 세션을 잃는 것은 첫 번째 요점 때문에 큰 문제가 아니 었습니다.

직접 질문에 대답하기 위해 데이터를 잃어 버리면 memcache 세션에만 저장하면됩니다. 잃어 버리는 것이 좋지 않으면 영구 저장 장치에 저장하고 memcache에 캐시하여 속도를 높입니다.

3

이것을 고려하는 사람은 Dormando's session post이어야합니다. 네가 원하는 모든 세부 사항이있어.

+0

안녕을 플러시! 좋은 링크! – Industrial

+0

지금은 404입니다. 업데이트가 있으시면 – Sekai

관련 문제