1

新しい設定を使用してmemcachedのアイテムサイズを増やしていますが、Djangoバックエンドを介して1MBを超えるものを保存できません。そのモジュールにはそれmemcacheを実現するための設定が必要であり、Django はこのモジュールをバックエンドで使用します。

4

2 に答える 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 に答える