문제

하드코딩된 청크 제한(압축 후 .5MB)이 있는 이유는 무엇입니까? 멤캐시드?누구든지 자신의 것을 다시 컴파일한 적이 있나요?나는 그렇게 큰 덩어리를 보내면 안 된다는 것을 알고 있지만, 이러한 여분의 무거운 덩어리는 때때로 나에게 발생하여 혼란을 야기합니다.

도움이 되었습니까?

해결책

이 질문은 예전에 공식 FAQ

memcached에는 어떤 제한이 있습니까?(웨이백 머신)

인용하자면:

Memcache에서 볼 수있는 간단한 한계는 키 및 항목 크기 한계입니다.키는 250자로 제한됩니다.저장된 데이터는 1 메가 바이트 크기를 초과 할 수 없습니다. 왜냐하면 그것은 가장 큰 일반적인 슬래브 크기이기 때문입니다. "

이제 FAQ가 개정되었으며 이를 다루는 두 가지 별도의 질문이 있습니다.

최대 키 길이는 얼마입니까?(250바이트)

키의 최대 크기는 250자입니다.접두사가 원래 키의 전면에 태클되기 때문에 클라이언트 "접두사"또는 이와 유사한 기능을 사용하는 경우이 값은 적습니다.더 짧은 키는 메모리를 저장하고 대역폭을 적게 사용하기 때문에 일반적으로 더 좋습니다.

항목 크기가 1MB로 제한되는 이유는 무엇입니까?

아, 이것은 인기있는 질문입니다!

짧은 답변:메모리 할당자의 알고리즘이 작동하는 방식 때문입니다.

긴 답변:Memcached의 메모리 저장 엔진 (향후 플러그 가능/조정)은 메모리 관리에 슬래브 접근 방식을 사용합니다.메모리는 최소 숫자부터 시작하여 최대의 가능한 값까지 요인에 의해 오름차순으로 다양한 크기의 슬래브 덩어리로 나뉩니다.

최소값이 400 바이트이고 최대 값은 1 메가 바이트이고 Factorial은 1.20입니다.

슬래브 1 - 400바이트 슬래브 2 - 480바이트 슬래브 3 - 576바이트 ...등.

슬래브가 클수록 그 슬래브와 이전 슬래브 사이에 간격이 더 많습니다.따라서 최대 값이 클수록 메모리 스토리지가 덜 효율적입니다.Memcached는 또한 존재하는 모든 슬래브에 대해 약간의 메모리를 사전 할당해야하므로 최대 값이 더 큰 작은 계승을 설정하려면 더 많은 오버 헤드가 필요합니다.

당신이 그렇게 하고 싶지 않은 다른 이유가 있어요...우리가 웹 페이지에 대해 이야기하고 있고 당신이 큰 값을 저장/로드하려고한다면, 당신은 아마도 뭔가 잘못하고있을 것입니다.이 크기에서는 데이터 구조를 메모리에로드하고 포장하는 데 눈에 띄는 시간이 걸리며 사이트가 잘 작동하지 않을 것입니다.

1MB보다 큰 품목을 저장하려면 편집 된 제품으로 Memcachip을 다시 컴파일 할 수 있습니다. slabs.c:POWER_BLOCK 값 또는 비효율적 인 malloc/무료 백엔드를 사용하십시오.다른 제안에는 데이터베이스, 모르 갈프 등이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top