Class yii\redis\Connection

Inheritanceyii\redis\Connection » yii\base\Component » yii\base\BaseObject
Implementsyii\base\Configurable, yii\redis\ConnectionInterface
Available since version2.0
Source Code https://github.com/yiisoft/yii2-redis/blob/master/Connection.php

The redis connection class is used to establish a connection to a redis server.

By default it assumes there is a redis server running on localhost at port 6379 and uses the database number 0.

It is possible to connect to a redis server using $hostname and $port or using a $unixSocket.

It also supports the AUTH command of redis. When the server needs authentication, you can set the $password property to authenticate with the server after connect.

Public Properties

Hide inherited properties

Property Type Description Defined By
$behaviors array<yii\base\Behavior<static>> List of behaviors attached to this component. yii\base\Component
$connectionString string Socket connection string. yii\redis\Connection
$connectionTimeout float Timeout to use for connection to redis. yii\redis\Connection
$contextOptions array PHP context options which are used in the Redis connection stream. yii\redis\Connection
$dataTimeout float Timeout to use for redis socket when reading and writing data. yii\redis\Connection
$database integer The redis database to use. yii\redis\Connection
$driverName string Name of the DB driver. yii\redis\Connection
$hostname string The hostname or ip address to use for connecting to the redis server. yii\redis\Connection
$isActive boolean Whether the DB connection is established. yii\redis\Connection
$luaScriptBuilder yii\redis\LuaScriptBuilder yii\redis\Connection
$password string The password for establishing DB connection. yii\redis\Connection
$port integer The port to use for connecting to the redis server. yii\redis\Connection
$redirectConnectionString string|null If the query gets redirected, use this as the temporary new hostname yii\redis\Connection
$redisCommands array List of available redis commands. yii\redis\Connection
$retries integer The number of times a command execution should be retried when a connection failure occurs. yii\redis\Connection
$retryInterval integer The retry interval in microseconds to wait between retry. yii\redis\Connection
$scheme string The connection scheme used for connecting to the redis server. yii\redis\Connection
$socket resource|false yii\redis\Connection
$socketClientFlags integer Bitmask field which may be set to any combination of connection flags passed to stream_socket_client(). yii\redis\Connection
$unixSocket string The unix socket path (e.g. /var/run/redis/redis.sock) to use for connecting to the redis server. yii\redis\Connection
$useSSL boolean Send sockets over SSL protocol. yii\redis\Connection
$username string|null Username for establishing DB connection. yii\redis\Connection

Public Methods

Hide inherited methods

Method Description Defined By
__call() Allows issuing all supported commands via magic methods. yii\redis\Connection
__clone() This method is called after the object is created by cloning an existing one. yii\base\Component
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of a component property. yii\base\Component
__isset() Checks if a property is set, i.e. defined and not null. yii\base\Component
__set() Sets the value of a component property. yii\base\Component
__sleep() Closes the connection when this component is being serialized. yii\redis\Connection
__unset() Sets a component property to be null. yii\base\Component
attachBehavior() Attaches a behavior to this component. yii\base\Component
attachBehaviors() Attaches a list of behaviors to the component. yii\base\Component
behaviors() Returns a list of behaviors that this component should behave as. yii\base\Component
canGetProperty() Returns a value indicating whether a property can be read. yii\base\Component
canSetProperty() Returns a value indicating whether a property can be set. yii\base\Component
className() Returns the fully qualified name of this class. yii\base\BaseObject
close() Closes the currently active DB connection. yii\redis\Connection
detachBehavior() Detaches a behavior from the component. yii\base\Component
detachBehaviors() Detaches all behaviors from the component. yii\base\Component
ensureBehaviors() Makes sure that the behaviors declared in behaviors() are attached to this component. yii\base\Component
executeCommand() Executes a redis command. yii\redis\Connection
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getConnectionString() Return the connection string used to open a socket connection. During a redirect (cluster mode) this will be the target of the redirect. yii\redis\Connection
getDriverName() Returns the name of the DB driver for the current dsn. yii\redis\Connection
getIsActive() Returns a value indicating whether the DB connection is established. yii\redis\Connection
getLuaScriptBuilder() yii\redis\Connection
getSocket() Return the connection resource if a connection to the target has been established before, false otherwise. yii\redis\Connection
hasEventHandlers() Returns a value indicating whether there is any handler attached to the named event. yii\base\Component
hasMethod() Returns a value indicating whether a method is defined. yii\base\Component
hasProperty() Returns a value indicating whether a property is defined for this component. yii\base\Component
init() Initializes the object. yii\base\BaseObject
off() Detaches an existing event handler from this component. yii\base\Component
on() Attaches an event handler to an event. yii\base\Component
open() Establishes a DB connection. yii\redis\Connection
trigger() Triggers an event. yii\base\Component

Protected Methods

Hide inherited methods

Method Description Defined By
initConnection() Initializes the DB connection. yii\redis\Connection
sendRawCommand() Sends RAW command string to the server. yii\redis\Connection

Events

Hide inherited events

Event Type Description Defined By
EVENT_AFTER_OPEN yii\redis\Event An event that is triggered after a DB connection is established yii\redis\Connection

Property Details

Hide inherited properties

$connectionString public property

Socket connection string.

$connectionTimeout public property

Timeout to use for connection to redis.

If not set the timeout set in php.ini will be used: ini_get("default_socket_timeout").

$contextOptions public property (available since version 2.0.15)

PHP context options which are used in the Redis connection stream.

See also https://www.php.net/manual/en/context.ssl.php.

$dataTimeout public property

Timeout to use for redis socket when reading and writing data.

If not set the php default value will be used.

public float $dataTimeout = null
$database public property

The redis database to use.

This is an integer value starting from 0. Defaults to 0. Since version 2.0.6 you can disable the SELECT command sent after connection by setting this property to null.

public integer $database = 0
$driverName public property

Name of the DB driver.

public string $driverName = null
$hostname public property

The hostname or ip address to use for connecting to the redis server.

Defaults to 'localhost'. If $unixSocket is specified, hostname and $port will be ignored.

public string $hostname = 'localhost'
$isActive public property

Whether the DB connection is established.

public boolean $isActive = null
$luaScriptBuilder public property
$password public property

The password for establishing DB connection.

Defaults to null meaning no AUTH command is sent. See https://redis.io/commands/auth

public string $password = null
$port public property

The port to use for connecting to the redis server.

Default port is 6379. If $unixSocket is specified, $hostname and port will be ignored.

public integer $port = 6379
$redirectConnectionString public property (available since version 2.0.11)

If the query gets redirected, use this as the temporary new hostname

$redisCommands public property

List of available redis commands.

See also https://redis.io/commands.

public array $redisCommands = [ 'APPEND', 'AUTH', 'BGREWRITEAOF', 'BGSAVE', 'BITCOUNT', 'BITFIELD', 'BITOP', 'BITPOS', 'BLPOP', 'BRPOP', 'BRPOPLPUSH', 'CLIENT KILL', 'CLIENT LIST', 'CLIENT GETNAME', 'CLIENT PAUSE', 'CLIENT REPLY', 'CLIENT SETNAME', 'CLUSTER ADDSLOTS', 'CLUSTER COUNTKEYSINSLOT', 'CLUSTER DELSLOTS', 'CLUSTER FAILOVER', 'CLUSTER FORGET', 'CLUSTER GETKEYSINSLOT', 'CLUSTER INFO', 'CLUSTER KEYSLOT', 'CLUSTER MEET', 'CLUSTER NODES', 'CLUSTER REPLICATE', 'CLUSTER RESET', 'CLUSTER SAVECONFIG', 'CLUSTER SETSLOT', 'CLUSTER SLAVES', 'CLUSTER SLOTS', 'COMMAND', 'COMMAND COUNT', 'COMMAND GETKEYS', 'COMMAND INFO', 'CONFIG GET', 'CONFIG REWRITE', 'CONFIG SET', 'CONFIG RESETSTAT', 'DBSIZE', 'DEBUG OBJECT', 'DEBUG SEGFAULT', 'DECR', 'DECRBY', 'DEL', 'DISCARD', 'DUMP', 'ECHO', 'EVAL', 'EVALSHA', 'EXEC', 'EXISTS', 'EXPIRE', 'EXPIREAT', 'FLUSHALL', 'FLUSHDB', 'GEOADD', 'GEOHASH', 'GEOPOS', 'GEODIST', 'GEORADIUS', 'GEORADIUSBYMEMBER', 'GET', 'GETBIT', 'GETRANGE', 'GETSET', 'HDEL', 'HEXISTS', 'HGET', 'HGETALL', 'HINCRBY', 'HINCRBYFLOAT', 'HKEYS', 'HLEN', 'HMGET', 'HMSET', 'HSET', 'HSETNX', 'HSTRLEN', 'HVALS', 'INCR', 'INCRBY', 'INCRBYFLOAT', 'INFO', 'KEYS', 'LASTSAVE', 'LINDEX', 'LINSERT', 'LLEN', 'LPOP', 'LPUSH', 'LPUSHX', 'LRANGE', 'LREM', 'LSET', 'LTRIM', 'MGET', 'MIGRATE', 'MONITOR', 'MOVE', 'MSET', 'MSETNX', 'MULTI', 'OBJECT', 'PERSIST', 'PEXPIRE', 'PEXPIREAT', 'PFADD', 'PFCOUNT', 'PFMERGE', 'PING', 'PSETEX', 'PSUBSCRIBE', 'PUBSUB', 'PTTL', 'PUBLISH', 'PUNSUBSCRIBE', 'QUIT', 'RANDOMKEY', 'READONLY', 'READWRITE', 'RENAME', 'RENAMENX', 'RESTORE', 'ROLE', 'RPOP', 'RPOPLPUSH', 'RPUSH', 'RPUSHX', 'SADD', 'SAVE', 'SCARD', 'SCRIPT DEBUG', 'SCRIPT EXISTS', 'SCRIPT FLUSH', 'SCRIPT KILL', 'SCRIPT LOAD', 'SDIFF', 'SDIFFSTORE', 'SELECT', 'SET', 'SETBIT', 'SETEX', 'SETNX', 'SETRANGE', 'SHUTDOWN', 'SINTER', 'SINTERSTORE', 'SISMEMBER', 'SLAVEOF', 'SLOWLOG', 'SMEMBERS', 'SMOVE', 'SORT', 'SPOP', 'SRANDMEMBER', 'SREM', 'STRLEN', 'SUBSCRIBE', 'SUNION', 'SUNIONSTORE', 'SWAPDB', 'SYNC', 'TIME', 'TOUCH', 'TTL', 'TYPE', 'UNSUBSCRIBE', 'UNLINK', 'UNWATCH', 'WAIT', 'WATCH', 'XACK', 'XADD', 'XCLAIM', 'XDEL', 'XGROUP', 'XINFO', 'XLEN', 'XPENDING', 'XRANGE', 'XREAD', 'XREADGROUP', 'XREVRANGE', 'XTRIM', 'ZADD', 'ZCARD', 'ZCOUNT', 'ZINCRBY', 'ZINTERSTORE', 'ZLEXCOUNT', 'ZRANGE', 'ZRANGEBYLEX', 'ZREVRANGEBYLEX', 'ZRANGEBYSCORE', 'ZRANK', 'ZREM', 'ZREMRANGEBYLEX', 'ZREMRANGEBYRANK', 'ZREMRANGEBYSCORE', 'ZREVRANGE', 'ZREVRANGEBYSCORE', 'ZREVRANK', 'ZSCORE', 'ZUNIONSTORE', 'SCAN', 'SSCAN', 'HSCAN', 'ZSCAN', ]
$retries public property (available since version 2.0.7)

The number of times a command execution should be retried when a connection failure occurs.

This is used in executeCommand() when a yii\redis\SocketException is thrown. Defaults to 0 meaning no retries on failure.

public integer $retries = 0
$retryInterval public property (available since version 2.0.10)

The retry interval in microseconds to wait between retry.

This is used in executeCommand() when a yii\redis\SocketException is thrown. Defaults to 0 meaning no wait.

$scheme public property (available since version 2.0.18)

The connection scheme used for connecting to the redis server.

Defaults to 'tcp'.

public string $scheme = 'tcp'
$socket public property
public resource|false $socket = null
$socketClientFlags public property (available since version 2.0.5)

Bitmask field which may be set to any combination of connection flags passed to stream_socket_client().

Currently the select of connection flags is limited to STREAM_CLIENT_CONNECT (default), STREAM_CLIENT_ASYNC_CONNECT and STREAM_CLIENT_PERSISTENT.

Warning: STREAM_CLIENT_PERSISTENT will make PHP reuse connections to the same server. If you are using multiple connection objects to refer to different redis databases on the same $port, redis commands may get executed on the wrong database. STREAM_CLIENT_PERSISTENT is only safe to use if you use only one database.

You may still use persistent connections in this case when disambiguating ports as described in a comment on the PHP manual e.g. on the connection used for session storage, specify the port as:

'port' => '6379/session'

See also https://www.php.net/manual/en/function.stream-socket-client.php.

public integer $socketClientFlags = STREAM_CLIENT_CONNECT
$unixSocket public property (available since version 2.0.1)

The unix socket path (e.g. /var/run/redis/redis.sock) to use for connecting to the redis server.

This can be used instead of $hostname and $port to connect to the server using a unix socket. If a unix socket path is specified, $hostname and $port will be ignored.

public string $unixSocket = null
$useSSL public property (available since version 2.0.12)

Send sockets over SSL protocol.

Default state is false.

public boolean $useSSL = false
$username public property (available since version 2.0.16)

Username for establishing DB connection.

Defaults to null meaning AUTH command will be performed without username. Username was introduced in Redis 6.

public string|null $username = null

Method Details

Hide inherited methods

__call() public method

Allows issuing all supported commands via magic methods.

$redis->hmset('test_collection', 'key1', 'val1', 'key2', 'val2')
public __call( string $name, array $params ): mixed
$name string

Name of the missing method to execute

$params array

Method call arguments

                public function __call($name, $params)
{
    $redisCommand = strtoupper(Inflector::camel2words($name, false));
    if (in_array($redisCommand, $this->redisCommands)) {
        return $this->executeCommand($redisCommand, $params);
    }
    return parent::__call($name, $params);
}

            
__clone() public method

Defined in: yii\base\Component::__clone()

This method is called after the object is created by cloning an existing one.

It removes all behaviors because they are attached to the old object.

public __clone( ): mixed

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() public method

Defined in: yii\base\BaseObject::__construct()

Constructor.

The default implementation does two things:

  • Initializes the object with the given configuration $config.
  • Call init().

If this method is overridden in a child class, it is recommended that

  • the last parameter of the constructor is a configuration array, like $config here.
  • call the parent implementation at the end of the constructor.
public __construct( array<string, mixed> $config = [] ): mixed
$config array<string, mixed>

Name-value pairs that will be used to initialize the object properties

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public method

Defined in: yii\base\Component::__get()

Returns the value of a component property.

This method will check in the following order and act accordingly:

  • a property defined by a getter: return the getter result
  • a property of a behavior: return the behavior property value

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing $value = $component->property;.

See also __set().

public __get( string $name ): mixed
$name string

The property name

return mixed

The property value or the value of a behavior's property

throws yii\base\UnknownPropertyException

if the property is not defined

throws yii\base\InvalidCallException

if the property is write-only.

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public method

Defined in: yii\base\Component::__isset()

Checks if a property is set, i.e. defined and not null.

This method will check in the following order and act accordingly:

  • a property defined by a setter: return whether the property is set
  • a property of a behavior: return whether the property is set
  • return false for non existing properties

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing isset($component->property).

See also https://www.php.net/manual/en/function.isset.php.

public __isset( string $name ): boolean
$name string

The property name or the event name

return boolean

Whether the named property is set

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public method

Defined in: yii\base\Component::__set()

Sets the value of a component property.

This method will check in the following order and act accordingly:

  • a property defined by a setter: set the property value
  • an event in the format of "on xyz": attach the handler to the event "xyz"
  • a behavior in the format of "as xyz": attach the behavior named as "xyz"
  • a property of a behavior: set the behavior property value

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing $component->property = $value;.

See also __get().

public __set( string $name, mixed $value ): mixed
$name string

The property name or the event name

$value mixed

The property value

throws yii\base\UnknownPropertyException

if the property is not defined

throws yii\base\InvalidCallException

if the property is read-only.

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        if ($value instanceof Behavior) {
            $this->attachBehavior($name, $value);
        } elseif ($value instanceof \Closure) {
            $this->attachBehavior($name, call_user_func($value));
        } elseif (isset($value['__class']) && is_subclass_of($value['__class'], Behavior::class)) {
            $this->attachBehavior($name, Yii::createObject($value));
        } elseif (!isset($value['__class']) && isset($value['class']) && is_subclass_of($value['class'], Behavior::class)) {
            $this->attachBehavior($name, Yii::createObject($value));
        } elseif (is_string($value) && is_subclass_of($value, Behavior::class, true)) {
            $this->attachBehavior($name, Yii::createObject($value));
        } else {
            throw new InvalidConfigException('Class is not of type ' . Behavior::class . ' or its subclasses');
        }
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__sleep() public method

Closes the connection when this component is being serialized.

public __sleep( ): array

                public function __sleep()
{
    $this->close();
    return array_keys(get_object_vars($this));
}

            
__unset() public method

Defined in: yii\base\Component::__unset()

Sets a component property to be null.

This method will check in the following order and act accordingly:

  • a property defined by a setter: set the property value to be null
  • a property of a behavior: set the property value to be null

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing unset($component->property).

See also https://www.php.net/manual/en/function.unset.php.

public __unset( string $name ): mixed
$name string

The property name

throws yii\base\InvalidCallException

if the property is read only.

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
attachBehavior() public method

Defined in: yii\base\Component::attachBehavior()

Attaches a behavior to this component.

This method will create the behavior object based on the given configuration. After that, the behavior object will be attached to this component by calling the yii\base\Behavior::attach() method.

See also detachBehavior().

public attachBehavior( string $name, string|array|yii\base\Behavior $behavior ): yii\base\Behavior<static>
$name string

The name of the behavior.

$behavior string|array|yii\base\Behavior

The behavior configuration. This can be one of the following:

return yii\base\Behavior<static>

The behavior object

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public method

Defined in: yii\base\Component::attachBehaviors()

Attaches a list of behaviors to the component.

Each behavior is indexed by its name and should be a yii\base\Behavior object, a string specifying the behavior class, or an configuration array for creating the behavior.

See also attachBehavior().

public attachBehaviors( array $behaviors ): mixed
$behaviors array

List of behaviors to be attached to the component

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
behaviors() public method

Defined in: yii\base\Component::behaviors()

Returns a list of behaviors that this component should behave as.

Child classes may override this method to specify the behaviors they want to behave as.

The return value of this method should be an array of behavior objects or configurations indexed by behavior names. A behavior configuration can be either a string specifying the behavior class or an array of the following structure:

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

Note that a behavior class must extend from yii\base\Behavior. Behaviors can be attached using a name or anonymously. When a name is used as the array key, using this name, the behavior can later be retrieved using getBehavior() or be detached using detachBehavior(). Anonymous behaviors can not be retrieved or detached.

Behaviors declared in this method will be attached to the component automatically (on demand).

public behaviors( ): array<array-key, class-string|array{class: class-string}|yii\base\Behavior>
return array<array-key, class-string|array{class: class-string}|yii\base\Behavior>

The behavior configurations.

                public function behaviors()
{
    return [];
}

            
canGetProperty() public method

Defined in: yii\base\Component::canGetProperty()

Returns a value indicating whether a property can be read.

A property can be read if:

  • the class has a getter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);
  • an attached behavior has a readable property of the given name (when $checkBehaviors is true).

See also canSetProperty().

public canGetProperty( string $name, boolean $checkVars = true, boolean $checkBehaviors = true ): boolean
$name string

The property name

$checkVars boolean

Whether to treat member variables as properties

$checkBehaviors boolean

Whether to treat behaviors' properties as properties of this component

return boolean

Whether the property can be read

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() public method

Defined in: yii\base\Component::canSetProperty()

Returns a value indicating whether a property can be set.

A property can be written if:

  • the class has a setter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);
  • an attached behavior has a writable property of the given name (when $checkBehaviors is true).

See also canGetProperty().

public canSetProperty( string $name, boolean $checkVars = true, boolean $checkBehaviors = true ): boolean
$name string

The property name

$checkVars boolean

Whether to treat member variables as properties

$checkBehaviors boolean

Whether to treat behaviors' properties as properties of this component

return boolean

Whether the property can be written

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() public static method
Deprecated since 2.0.14. On PHP >=5.5, use ::class instead.

Defined in: yii\base\BaseObject::className()

Returns the fully qualified name of this class.

public static className( ): string
return string

The fully qualified name of this class.

                public static function className()
{
    return get_called_class();
}

            
close() public method

Closes the currently active DB connection.

It does nothing if the connection is already closed.

public close( ): void

                public function close(): void
{
    foreach ($this->_pool as $socket) {
        $connection = $this->connectionString . ', database=' . $this->database;
        \Yii::debug('Closing DB connection: ' . $connection, __METHOD__);
        try {
            $this->executeCommand('QUIT');
        } catch (SocketException $e) {
            // ignore errors when quitting a closed connection
        }
        fclose($socket);
    }
    $this->_pool = [];
}

            
detachBehavior() public method

Defined in: yii\base\Component::detachBehavior()

Detaches a behavior from the component.

The behavior's yii\base\Behavior::detach() method will be invoked.

public detachBehavior( string $name ): yii\base\Behavior<static>|null
$name string

The behavior's name.

return yii\base\Behavior<static>|null

The detached behavior. Null if the behavior does not exist.

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() public method

Defined in: yii\base\Component::detachBehaviors()

Detaches all behaviors from the component.

public detachBehaviors( ): mixed

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() public method

Defined in: yii\base\Component::ensureBehaviors()

Makes sure that the behaviors declared in behaviors() are attached to this component.

public ensureBehaviors( ): mixed

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
executeCommand() public method

Executes a redis command.

For a list of available commands and their parameters see https://redis.io/commands.

The params array should contain the params separated by white space, e.g. to execute SET mykey somevalue NX call the following:

$redis->executeCommand('SET', ['mykey', 'somevalue', 'NX']);
public executeCommand( string $name, array $params = [] ): array|boolean|null|string
$name string

The name of the command

$params array

List of parameters for the command

return array|boolean|null|string

Dependent on the executed command this method will return different data types:

  • true for commands that return "status reply" with the message 'OK' or 'PONG'.
  • string for commands that return "status reply" that does not have the message OK (since version 2.0.1).
  • string for commands that return "integer reply" as the value is in the range of a signed 64 bit integer.
  • string or null for commands that return "bulk reply".
  • array for commands that return "Multi-bulk replies".

See redis protocol description for details on the mentioned reply types.

throws yii\db\Exception

for commands that return error reply.

                public function executeCommand(string $name, array $params = [])
{
    $this->open();
    $params = array_merge(explode(' ', $name), $params);
    $command = '*' . count($params) . "\r\n";
    foreach ($params as $arg) {
        $command .= '$' . mb_strlen($arg ?? '', '8bit') . "\r\n" . $arg . "\r\n";
    }
    \Yii::debug("Executing Redis Command: {$name}", __METHOD__);
    if ($this->retries > 0) {
        $tries = $this->retries;
        while ($tries-- > 0) {
            try {
                return $this->sendRawCommand($command, $params);
            } catch (SocketException $e) {
                \Yii::error($e, __METHOD__);
                // backup retries, fail on commands that fail inside here
                $retries = $this->retries;
                $this->retries = 0;
                $this->close();
                if ($this->retryInterval > 0) {
                    usleep($this->retryInterval);
                }
                try {
                    $this->open();
                } catch (SocketException $exception) {
                    // Fail to run initial commands, skip current try
                    \Yii::error($exception, __METHOD__);
                    $this->close();
                } catch (Exception $exception) {
                    $this->close();
                }
                $this->retries = $retries;
            }
        }
    }
    return $this->sendRawCommand($command, $params);
}

            
getBehavior() public method

Defined in: yii\base\Component::getBehavior()

Returns the named behavior object.

public getBehavior( string $name ): yii\base\Behavior<static>|null
$name string

The behavior name

return yii\base\Behavior<static>|null

The behavior object, or null if the behavior does not exist

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() public method

Defined in: yii\base\Component::getBehaviors()

Returns all behaviors attached to this component.

public getBehaviors( ): array<yii\base\Behavior<static>>
return array<yii\base\Behavior<static>>

List of behaviors attached to this component

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getConnectionString() public method (available since version 2.0.11)

Return the connection string used to open a socket connection. During a redirect (cluster mode) this will be the target of the redirect.

public getConnectionString( ): string
return string

Socket connection string

                public function getConnectionString()
{
    if ($this->unixSocket) {
        return 'unix://' . $this->unixSocket;
    }
    return $this->scheme . '://' . ($this->redirectConnectionString ?: "$this->hostname:$this->port");
}

            
getDriverName() public method

Returns the name of the DB driver for the current dsn.

public getDriverName( ): string
return string

Name of the DB driver

                public function getDriverName()
{
    return 'redis';
}

            
getIsActive() public method

Returns a value indicating whether the DB connection is established.

public getIsActive( ): boolean
return boolean

Whether the DB connection is established

                public function getIsActive(): bool
{
    return ArrayHelper::getValue($this->_pool, $this->connectionString, false) !== false;
}

            
getLuaScriptBuilder() public method
public getLuaScriptBuilder( ): yii\redis\LuaScriptBuilder

                public function getLuaScriptBuilder()
{
    return new LuaScriptBuilder();
}

            
getSocket() public method

Return the connection resource if a connection to the target has been established before, false otherwise.

public getSocket( ): resource|false

                public function getSocket()
{
    return ArrayHelper::getValue($this->_pool, $this->connectionString, false);
}

            
hasEventHandlers() public method

Defined in: yii\base\Component::hasEventHandlers()

Returns a value indicating whether there is any handler attached to the named event.

public hasEventHandlers( string $name ): boolean
$name string

The event name

return boolean

Whether there is any handler attached to the event.

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() public method

Defined in: yii\base\Component::hasMethod()

Returns a value indicating whether a method is defined.

A method is defined if:

  • the class has a method with the specified name
  • an attached behavior has a method with the given name (when $checkBehaviors is true).
public hasMethod( string $name, boolean $checkBehaviors = true ): boolean
$name string

The property name

$checkBehaviors boolean

Whether to treat behaviors' methods as methods of this component

return boolean

Whether the method is defined

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() public method

Defined in: yii\base\Component::hasProperty()

Returns a value indicating whether a property is defined for this component.

A property is defined if:

  • the class has a getter or setter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);
  • an attached behavior has a property of the given name (when $checkBehaviors is true).

See also:

public hasProperty( string $name, boolean $checkVars = true, boolean $checkBehaviors = true ): boolean
$name string

The property name

$checkVars boolean

Whether to treat member variables as properties

$checkBehaviors boolean

Whether to treat behaviors' properties as properties of this component

return boolean

Whether the property is defined

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() public method

Defined in: yii\base\BaseObject::init()

Initializes the object.

This method is invoked at the end of the constructor after the object is initialized with the given configuration.

public init( ): mixed

                public function init()
{
}

            
initConnection() protected method

Initializes the DB connection.

This method is invoked right after the DB connection is established. The default implementation triggers an EVENT_AFTER_OPEN event.

protected initConnection( ): mixed

                protected function initConnection()
{
    $this->trigger(self::EVENT_AFTER_OPEN);
}

            
off() public method

Defined in: yii\base\Component::off()

Detaches an existing event handler from this component.

This method is the opposite of on().

Note: in case wildcard pattern is passed for event name, only the handlers registered with this wildcard will be removed, while handlers registered with plain names matching this wildcard will remain.

See also on().

public off( string $name, callable|null $handler = null ): boolean
$name string

Event name

$handler callable|null

The event handler to be removed. If it is null, all handlers attached to the named event will be removed.

return boolean

If a handler is found and detached

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() public method

Defined in: yii\base\Component::on()

Attaches an event handler to an event.

The event handler must be a valid PHP callback. The following are some examples:

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

The event handler must be defined with the following signature,

function ($event)

where $event is an yii\base\Event object which includes parameters associated with the event.

Since 2.0.14 you can specify event name as a wildcard pattern:

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

See also off().

public on( string $name, callable $handler, mixed $data = null, boolean $append = true ): mixed
$name string

The event name

$handler callable

The event handler

$data mixed

The data to be passed to the event handler when the event is triggered. When the event handler is invoked, this data can be accessed via yii\base\Event::$data.

$append boolean

Whether to append new event handler to the end of the existing handler list. If false, the new handler will be inserted at the beginning of the existing handler list.

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
open() public method

Establishes a DB connection.

It does nothing if a DB connection has already been established.

public open( ): void
throws yii\db\Exception

if connection fails

                public function open(): void
{
    if ($this->socket !== false) {
        return;
    }
    $connection = $this->connectionString . ', database=' . $this->database;
    \Yii::debug('Opening redis DB connection: ' . $connection, __METHOD__);
    $socket = @stream_socket_client(
        $this->connectionString,
        $errorNumber,
        $errorDescription,
        $this->connectionTimeout ?: ini_get('default_socket_timeout'),
        $this->socketClientFlags,
        stream_context_create($this->contextOptions)
    );
    if ($socket) {
        $this->_pool[ $this->connectionString ] = $socket;
        if ($this->dataTimeout !== null) {
            stream_set_timeout($socket, $timeout = (int) $this->dataTimeout, (int) (($this->dataTimeout - $timeout) * 1000000));
        }
        if ($this->useSSL) {
            stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
        }
        if ($this->password !== null) {
            $this->executeCommand('AUTH', array_filter([$this->username, $this->password]));
        }
        if ($this->database !== null) {
            $this->executeCommand('SELECT', [$this->database]);
        }
        $this->initConnection();
    } else {
        \Yii::error("Failed to open redis DB connection ($connection): $errorNumber - $errorDescription", __CLASS__);
        $message = YII_DEBUG ? "Failed to open redis DB connection ($connection): $errorNumber - $errorDescription" : 'Failed to open DB connection.';
        throw new Exception($message, $errorDescription, $errorNumber);
    }
}

            
sendRawCommand() protected method

Sends RAW command string to the server.

protected sendRawCommand( string $command, array $params ): array|boolean|null|string
$command string

Command string

$params array

List of parameters for the command

return array|boolean|null|string

Dependent on the executed command this method will return different data types:

  • true for commands that return "status reply" with the message 'OK' or 'PONG'.
  • string for commands that return "status reply" that does not have the message OK (since version 2.0.1).
  • string for commands that return "integer reply" as the value is in the range of a signed 64 bit integer.
  • string or null for commands that return "bulk reply".
  • array for commands that return "Multi-bulk replies".

See redis protocol description for details on the mentioned reply types.

throws yii\db\Exception

for commands that return error reply.

throws yii\redis\SocketException

on connection error.

                protected function sendRawCommand($command, $params)
{
    $written = @fwrite($this->socket, $command);
    if ($written === false) {
        throw new SocketException("Failed to write to socket.\nRedis command was: " . $command);
    }
    if ($written !== ($len = mb_strlen($command, '8bit'))) {
        throw new SocketException("Failed to write to socket. $written of $len bytes written.\nRedis command was: " . $command);
    }
    return $this->parseResponse($params, $command);
}

            
trigger() public method

Defined in: yii\base\Component::trigger()

Triggers an event.

This method represents the happening of an event. It invokes all attached handlers for the event including class-level handlers.

public trigger( string $name, yii\base\Event|null $event = null ): mixed
$name string

The event name

$event yii\base\Event|null

The event instance. If not set, a default yii\base\Event object will be created.

                public function trigger($name, ?Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            

Event Details

Hide inherited properties

EVENT_AFTER_OPEN event of type yii\redis\Event

An event that is triggered after a DB connection is established