2012-02-10 3 views
4

У меня есть проект Zend Framework, и я решил использовать Rediska как клиент Redis. Rediska имеет адаптер для бэкэнда для ZF - Rediska_Zend_Cache_Backend_Redis.Ошибка Redis «Время ожидания подключения» при кешировании

Я извлекаю из базы данных из базы данных DB и пытаюсь сохранить ее в кеше, но получаю сообщение об ошибке: время соединения проверяется. Мой пример кода:

$rediskaOptions = array(
        'name' => 'cache', 
        'namespace' => 'Cache_', 
        'servers' => array('cache' => array(
         'host' => Rediska_Connection::DEFAULT_HOST, 
         'port' => Rediska_Connection::DEFAULT_PORT, 
         'password' => 'qwerty' 
         ) 
        ) 
     ); 

$cache = Zend_Cache::factory('Core', 'Rediska_Zend_Cache_Backend_Redis', 
    array('lifetime' => NULL, 'automatic_serialization' => true), 
    array('rediska' => $rediskaOptions), false, true 
); 
$cacheId = 'news_main'; 
if (!($topics = $cache->load($cacheId))) { 
    $topics = DAOFactory::getInstance()->getTopicDAO()->fetchTopic(1); 
    $cache->save($topics, $cacheId); 
} 

Размер содержимого после сериализации - 26787 байт. Возможно, у Redis есть ограничения по размеру для отправки?

+0

Ограничения размера Redis на значения намного выше этого. Теоретический предел для строкового значения составляет 512 МБ. У него не должно быть проблем с хранением объектов на 26 КБ. –

+0

Каково значение параметра readTimeout? http://rediska.geometria-lab.net/documentation/configuration/servers/ –

+0

i установить таймаут 0 в файле /etc/redis/redis.conf и readTimeout в rediska имеет значение по умолчанию - null. – Dmitro

ответ

0

Если это помогает, я использую Rediska с ZF. Вот как я это настроил.

$options = array(
       'servers' => array(
        array( 'host'  => '127.0.0.1', 
          'port'  => 6379, 
          'alias' => 'cache' 
       ), 
       //'name' => 'cache', 
       //'namespace' => 'Cache_' 
       ) 
      ); 

    $rediska = new Rediska($options); 

    $frontendOptions = array('automatic_serialization' => true); 
    $backendOptions = array('rediska' => $rediska); 

    $cache = Zend_Cache::factory('Core', 
      'Rediska_Zend_Cache_Backend_Redis', 
      $frontendOptions, 
      $backendOptions, 
      false, 
      true 
    ); 

Разница, которую я вижу, находится в вариантах бэкэнд. Я указываю rediska на экземпляр rediska.

+0

Я пытался, как вы писали, но это не помогает. – Dmitro

Смежные вопросы