2011-05-10 4 views
0

모든 PHP 페이지에 대해 큰 배열을 사용하는 대신 Memcached를 사용하여 모든 다중 언어 문자열을 캐시하려고합니다.memcached가 만료되기 전에 만료

while (fetching database) {
$memcached->set($language.':'.$string_id, $translation, 0, 0);
}

문제는, (모든 이들 대부분이 보인다 : 내가 무엇

은 내가 memcached를 각각 설정 데이터베이스에서 번역 된 구문을 가져오고, 루프에서하는 것입니다 무작위)는 자동으로 "만료"됩니다. 이유는 없습니다.
이 내 통계는 다음과 같습니다

서버의 현재 무료 메모리 : 1 GB 이상
총 Memcached가 공간 : 현재 사용 memcached를 16메가바이트
: 2.66MB

은 "퇴거"통계 (무료 메모리 제거 항목 새 항목)주기를 실행할 때 늘립니다. 내가 결코 만료시키지 않기로 결정하고 memcached에 많은 여유 공간이 있기 때문에 이것은별로 의미가 없습니다.

어떤 일이 일어날 지 아는 사람이 있습니까?
감사합니다.

답변

1

0은 30 일이 아니므로 0입니다 (즉 만료하지 않음).

16MB로는 작업하기에 충분하지 않습니다. 당신은 아주 빨리 슬래브 중 하나를 날려 버리고 다른 하나에 데이터를 저장하려고하는데 공간이 부족합니다.

이 실제로 인 경우 16MB 이내에 넣으려면 슬래브를 고정 크기로 조정하십시오. 아마 당신의 다양한 데이터 크기로 작업하기에 충분한 램을 제공하는 것이 훨씬 쉽습니다.

+0

죄송합니다. "30 일"인 "0"에 대해 php.net에서 잘못 읽었습니다. 위의 질문에 대한 답변을 수정했습니다. 감사합니다. 어쨌든, 그 "석판"에 대해 나에게 설명해 주시겠습니까? 언어 구문은 16MB를 초과하지 않습니다. 그들은 단지 약 2MB입니다. 다시 감사합니다. – Nuno

+1

더스틴, 나는 이것을 발견했다. http://www.mikeperham.com/2009/06/22/slabs-pages-chunks-and-memcached/ - 슬랩이 무엇인지 잘 설명해 주었다. 니가 지금 무슨 뜻인지 이해해. 고맙습니다! – Nuno

관련 문제