1
即時通訊使用新的設置來增加memcached中的項目大小,但我不能通過Django後端存儲大於1mb的東西。 我知道memcache
模塊需要一些設置來實現thath,並且Django在後端使用這個模塊。如何判斷Django運行的項目大小大於默認的memcached?
即時通訊使用新的設置來增加memcached中的項目大小,但我不能通過Django後端存儲大於1mb的東西。 我知道memcache
模塊需要一些設置來實現thath,並且Django在後端使用這個模塊。如何判斷Django運行的項目大小大於默認的memcached?
從Maximum size of object that can be saved in memcached with memcache.py:
有關於兩個項目在分佈式緩存FAQ:
什麼是你可以存儲的最大數據大小?爲什麼項目限制爲1兆字節大小的 ?第一個的答案是(引用,重點是 地雷):
您可以在memcached中存儲的值的最大值爲1兆字節。 如果您的數據較大,請考慮客戶端壓縮或將 的值分成多個密鑰。
所以我猜你的11MB的文件是相當太大,不適合在一個 memcached的條目。
如果你真的想緩存較大的物體,你將不得不繼承Django的MemcachedCache因爲它doesn't allow you to pass in options:
self._client = self._lib.Client(self._servers, pickleProtocol=pickle.HIGHEST_PROTOCOL)
舉例子類實現:
from django.core.cache.backends.memcached import MemcachedCache
class LargeMemcachedCache(MemcachedCache):
"Memcached cache for large objects"
@property
def _cache(self):
if getattr(self, '_client', None) is None:
self._client = self._lib.Client(self._servers,
pickleProtocol=pickle.HIGHEST_PROTOCOL,
server_max_value_length = 1024*1024*10)
return self._client