#110864 Конфигурация yii для работы с кластерным redis
This commit is contained in:
		@@ -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)
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user