与magento CE 1.8连接时出现随机redis错误

与magento CE 1.8连接时出现随机redis错误,magento,caching,redis,Magento,Caching,Redis,我将magento配置为使用redis后端缓存运行,并且在随机情况下遇到一些连接错误 错误堆栈跟踪如下所示: a:4:{i:0;s:24:"read error on connection";i:1;s:1653:"#0 /var/www/mage/lib/Credis/Client.php(440): Credis_Client->__call('select', Array) #1 /var/www/mage/lib/Cm/Cache/Backend/Redis.php(117): C

我将magento配置为使用redis后端缓存运行,并且在随机情况下遇到一些连接错误

错误堆栈跟踪如下所示:

a:4:{i:0;s:24:"read error on connection";i:1;s:1653:"#0 /var/www/mage/lib/Credis/Client.php(440): Credis_Client->__call('select', Array)
#1 /var/www/mage/lib/Cm/Cache/Backend/Redis.php(117): Credis_Client->select(0)
#2 /var/www/mage/lib/Zend/Cache.php(153): Cm_Cache_Backend_Redis->__construct(Array)
#3 /var/www/mage/lib/Zend/Cache.php(94): Zend_Cache::_makeBackend('Cm_Cache_Backen...', Array, true, true)
#4 /var/www/mage/app/code/core/Mage/Core/Model/Cache.php(137): Zend_Cache::factory('Varien_Cache_Co...', 'Cm_Cache_Backen...', Array, Array, true, true, true)
#5 /var/www/mage/app/code/core/Mage/Core/Model/Config.php(1348): Mage_Core_Model_Cache->__construct(Array)
#6 /var/www/mage/app/Mage.php(463): Mage_Core_Model_Config->getModelInstance('core/cache', Array)
#7 /var/www/mage/app/code/core/Mage/Core/Model/App.php(401): Mage::getModel('core/cache', Array)
#8 /var/www/mage/app/code/core/Mage/Core/Model/App.php(295): Mage_Core_Model_App->_initCache(Array)
#9 /var/www/mage/app/code/core/Mage/Core/Model/App.php(337): Mage_Core_Model_App->baseInit(Array)
#10 /var/www/mage/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#11 /var/www/mage/index.php(90): Mage::run('', 'store')
#12 {main}";s:3:"url";s:1:"/";s:11:"script_name";s:10:"/index.php";}
这是由核心magento函数和我的自定义代码引起的。 特别是我的一个助手,我用这种方式使用缓存:

public function getSomething($id)
{
    if ($cacheResult) {
        $cache = Mage::app()->getCacheInstance();
        $cacheKey = "something_".$id;
        $value = $cache->load($cacheKey);
        if ($value) {
            $value = unserialize($value);
        } else {
            $value = '';
        }
    } else {
        $value = '';
    }
    if(is_array($value)) {
        $result = $value;
    } else {
        $result = $this->api->getSomething($id);
        if ($cacheResult) {
            $cache->save(serialize($result), $cacheKey);
        }
    }

    return $result;
}
你知道为什么会出现这些错误吗? 它与我的代码关联吗?它应该写得不同吗

它在VPS上运行:

  • vCPU 2000 MHz x 2 vCore
  • 2GB内存(4GB升压)
  • 硬盘RAID 10
CPU使用率平均为25%-30%,无峰值,占用内存约600 MB。我没有与磁盘IO利用率相关的数据。

我在几个Magento上使用过,它工作得很好。我知道它并不能真正回答你的问题,但它也许能解决这个问题。它允许在local.xml中为magento配置Redis,并链接到,这对我来说非常有用


此外,您可以尝试直接在服务器中擦除密钥,因为有时数据并不完全一致。

但我使用本机magento模块,无需安装其他扩展,因为CE 1.8尝试擦除redis中的所有内容,但没有帮助。错误率非常高,现在上个小时大约有90个请求,有10个错误报告。