Кэш-память через 1 мб альтернативы memcache

У меня есть объект в php, который больше, чем один мб. Я использую memcache, который позволяет мне хранить 1mb или данные. Кто-нибудь знает какие-либо другие альтернативы для данных по 1mb. Я читал, что изменение memcache для хранения больше не лучший вариант.

Вы можете использовать MultipartCache, который расширяет memcache для поддержки данных, превышающих 1 1MB limit . Обратите внимание, что в memcached 1.4.2 и выше вы можете настроить максимальный размер поддерживаемого объекта с помощью опции -I командной строки.

  memcached -I 5m //default: 1mb, min: 1k, max: 128m 

MultipartCache просто разбивает данные на разные части в зависимости от установленного предела max 1MB

Пример:

 $largeSet = range(0, 100000); $key = "largeSet"; $cache = new MultipartCache(); $cache->setLimit(1024); $cache->set($key, $largeSet); 

Система разделила бы базу данных на size/limit который составляет около 575 различных мест для образца выше.

Получить эту информацию довольно просто

 $dataFromCache = $cache->get($key); 

Как мы уверены, что данные в порядке? это то, что для hash но позволяет сделать случайный тест

 for($i = 0; $i < 20; $i ++) { $rand = mt_rand(0, 100000); printf("%s - %s\n", $dataFromCache[$rand], assert($dataFromCache[$rand] == $rand) ? "true" : "false"); } 

Вывод

 39603 - true 16034 - true 23116 - true 94038 - true 64481 - true 84987 - true 53912 - true 32153 - true 43965 - true 71144 - true 97309 - true 53227 - true 28525 - true 9936 - true 16921 - true 27323 - true 35129 - true 46235 - true 5641 - true 43425 - true 

Теперь давайте посмотрим на более чувствительную информацию .. как изображение …

 $key = "largeImage"; $cache = new MultipartCache(); $cache->addserver("127.0.0.1"); $cache->set($key, file_get_contents("large_image.jpg")); header("Content-Type: image/jpeg"); echo $cache->get($key);