使用 PHP,我在 memcached 中保留了一个数组,作为以下过程的一部分:
- 从内存缓存中获取数组
- 对数组中的第一项执行操作
- 根据操作结果更新阵列
- 在内存缓存中设置数组
该数组包含字符串形式的 URL。
对于大型数组大小,内存缓存集操作失败。最近,对于包含 78175 个 URL 的数组,它失败了。
我从memcached得到的错误有点通用:
Result code: 10
Result message: SERVER ERROR
libmemcached 文档对于这个特定错误几乎没有用处。
我使用的代码非常简单:
public function save() {
$this->memcached->set($this->key, $this->items);
}
protected function load() {
$this->items = $this->memcached->get($this->key);
if (!$this->items) {
$this->items = array();
}
}
libmemcached 文档对此错误几乎没有直接帮助,错误本身是可以理解的模糊的。
内存缓存错误 10 的原因可能是什么?
就我而言,我相信这是因为数据超过了 memcache 对象的全局最大值 (1MB)。
Error is Memcached::OPT_BUFFER_WRITES - 10
$this->_Memcache =& new Memcached();
$this->_Memcache->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_PHP);
$this->_Memcache->setOption(Memcached::OPT_NO_BLOCK, true);
$this->_Memcache->setOption(Memcached::OPT_TCP_NODELAY, true);
$this->_Memcache->setOption(Memcached::OPT_BUFFER_WRITES, true);
$this->_Memcache->setOption(Memcached::OPT_SERVER_FAILURE_LIMIT,3);
$this->_Memcache->setOption(Memcached::OPT_HASH,Memcached::HASH_CRC);