#110864 Конфигурация yii для работы с кластерным redis

This commit is contained in:
Александр Рыбкин 2025-04-14 17:53:24 +03:00
parent 1e3c0631d7
commit 55cd4c5ddb
2 changed files with 14 additions and 9 deletions

View File

@ -4,6 +4,7 @@ namespace dominion\cache;
use Yii; use Yii;
use Predis\Client; use Predis\Client;
use yii\helpers\Inflector;
class Connection extends \yii\redis\Connection class Connection extends \yii\redis\Connection
{ {
@ -14,7 +15,7 @@ class Connection extends \yii\redis\Connection
/** /**
* @var mixed Options to configure some behaviours of the client. * @var mixed Options to configure some behaviours of the client.
*/ */
public $options; public $options = [];
/** /**
* @var Client redis socket connection * @var Client redis socket connection
@ -34,7 +35,7 @@ class Connection extends \yii\redis\Connection
public function executeCommand($name, $params = []) public function executeCommand($name, $params = [])
{ {
$this->open(); $this->open();
Yii::debug("Executing Redis Command: {$name} ". implode(' ', $params), __METHOD__); Yii::debug("Executing Redis Command: {$name} " . implode(' ', $params), __METHOD__);
return $this->_socket->executeCommand( return $this->_socket->executeCommand(
$this->_socket->createCommand($name, $params) $this->_socket->createCommand($name, $params)
); );

View File

@ -61,7 +61,7 @@ class RedisCache
{ {
if (!self::$prefix) if (!self::$prefix)
{ {
self::$prefix = isset(Yii::$app->params['redis'], Yii::$app->params['redis']['prefix']) ? (int) Yii::$app->params['redis']['prefix'] : ''; self::$prefix = isset(Yii::$app->params['redis'], Yii::$app->params['redis']['prefix']) ? (string)Yii::$app->params['redis']['prefix'] : '';
} }
return self::$prefix; return self::$prefix;
} }
@ -97,7 +97,7 @@ class RedisCache
public static function hset($key, $field, $value) public static function hset($key, $field, $value)
{ {
return self::getActive() ? Yii::$app->redis->hset(self::calculateKey($key), $field, $value) : false; return self::getActive() ? Yii::$app->redis->hset(self::calculateKey($key), $field, json_encode($value)) : false;
} }
public static function hsetModel($key, $field, $model) public static function hsetModel($key, $field, $model)
@ -134,7 +134,12 @@ class RedisCache
public static function hget($key, $field) public static function hget($key, $field)
{ {
return self::getActive() ? Yii::$app->redis->hget(self::calculateKey($key), $field) : false; $output = false;
if(self::getActive())
{
$output = json_decode(Yii::$app->redis->hget(self::calculateKey($key), $field), true);
}
return $output === null ? false : $output;;
} }
public static function hgetModel($key, $field, $className) public static function hgetModel($key, $field, $className)
@ -275,8 +280,7 @@ class RedisCache
{ {
$options = ['EX' => $options]; $options = ['EX' => $options];
} }
$json = json_encode($value); Yii::$app->redis->set(self::calculateKey($key), json_encode($value) .' '. implode(' ', $options));
Yii::$app->redis->set(self::calculateKey($key), $json, $options);
} }
return $result; return $result;
} }
@ -309,9 +313,9 @@ class RedisCache
$result = false; $result = false;
if (self::getActive()) if (self::getActive())
{ {
$result = Yii::$app->redis->get(self::calculateKey($key)); $result = json_decode(Yii::$app->redis->get(self::calculateKey($key)), true);
} }
return $result ? json_decode($result, true) : $result; return $result === null ? false : $result;
} }
public static function getModel($key, $className) public static function getModel($key, $className)