#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 Predis\Client;
use yii\helpers\Inflector;
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.
*/
public $options;
public $options = [];
/**
* @var Client redis socket connection
@ -34,7 +35,7 @@ class Connection extends \yii\redis\Connection
public function executeCommand($name, $params = [])
{
$this->open();
Yii::debug("Executing Redis Command: {$name} ". implode(' ', $params), __METHOD__);
Yii::debug("Executing Redis Command: {$name} " . implode(' ', $params), __METHOD__);
return $this->_socket->executeCommand(
$this->_socket->createCommand($name, $params)
);

View File

@ -61,7 +61,7 @@ class RedisCache
{
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;
}
@ -97,7 +97,7 @@ class RedisCache
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)
@ -134,7 +134,12 @@ class RedisCache
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)
@ -275,8 +280,7 @@ class RedisCache
{
$options = ['EX' => $options];
}
$json = json_encode($value);
Yii::$app->redis->set(self::calculateKey($key), $json, $options);
Yii::$app->redis->set(self::calculateKey($key), json_encode($value) .' '. implode(' ', $options));
}
return $result;
}
@ -309,9 +313,9 @@ class RedisCache
$result = false;
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)