protected function _driverSet($k, $v)
{
switch ($this->_type) {
case 'mysql':
foreach ($v as &$tmp) {
$tmp = "'" . $this->_driver()->real_escape_string($tmp) . "'";
}
unset($tmp);
$k = $this->_driver()->real_escape_string($k);
$sql = 'INSERT INTO `' . $this->_link['table'] . '`, (`_key`, `' . implode('`, `', array_keys($v)) . '`) VALUES (\'' . $k . '\', ' . implode(', ', $v) . ')';
$sql .= 'ON DUPLICATE KEY UPDATE ';
foreach ($v as $kk => $vv) {
$sql .= "`{$kk}` = {$vv}, ";
}
$sql = rtrim($sql, ' ,');
# INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c = 1;
$rs = $this->_driver()->query($sql);
return $rs ? true : false;
case 'sqlite':
break;
case 'redis':
case 'ssdb':
return $this->_driver()->hSet($this->_link['path'], $k, serialize(parent::get($k)));
case 'rocksdb':
if (!$this->_driver) {
$this->_driver = new \RocksDB($this->_link['path']);
}
return $this->_driver->set($k, serialize($v));
}
return false;
}