新しい設定を使用してmemcachedのアイテムサイズを増やしていますが、Djangoバックエンドを介して1MBを超えるものを保存できません。そのモジュールにはそれmemcache
を実現するための設定が必要であり、Django はこのモジュールをバックエンドで使用します。
質問する
2198 次
2 に答える
6
memcache.py で memcached に保存できるオブジェクトの最大サイズから:
memcached FAQ には、それに関する 2 つのエントリがあります。
保存できる最大データサイズは?アイテムのサイズが 1 メガバイトに制限されているのはなぜですか? 最初のものへの答えは(引用、私の強調)です:
memcached に格納できる値の最大サイズは 1 メガバイトです。データが大きい場合は、クライアント側で圧縮するか、値を複数のキーに分割することを検討してください。
したがって、11MB のファイルは大きすぎて 1 つの memcached エントリに収まらないと思います。
本当に大きなオブジェクトをキャッシュしたい場合は、 options を渡すことができないため、 Django の MemcachedCache をサブクラス化する必要があります。
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
于 2013-07-28T08:17:54.797 に答える