| Package | system.caching |
|---|---|
| Inheritance | class CRedisCache » CCache » CApplicationComponent » CComponent |
| Implements | ArrayAccess, ICache, IApplicationComponent |
| Since | 1.1.14 |
| Source Code | framework/caching/CRedisCache.php |
array(
'components'=>array(
'cache'=>array(
'class'=>'CRedisCache',
'hostname'=>'localhost',
'port'=>6379,
'database'=>0,
'options'=>STREAM_CLIENT_CONNECT,
),
),
)
| Property | Type | Description | Defined By |
|---|---|---|---|
| behaviors | array | the behaviors that should be attached to this component. | CApplicationComponent |
| database | int | the redis database to use. | CRedisCache |
| hashKey | boolean | whether to md5-hash the cache key for normalization purposes. | CCache |
| hostname | string | hostname to use for connecting to the redis server. | CRedisCache |
| isInitialized | boolean | Checks if this application component has been initialized. | CApplicationComponent |
| keyPrefix | string | a string prefixed to every cache key so that it is unique. | CCache |
| options | int | the options to pass to the flags parameter of stream_socket_client when connecting to the redis server. | CRedisCache |
| password | string | the password to use to authenticate with the redis server. | CRedisCache |
| port | int | the port to use for connecting to the redis server. | CRedisCache |
| serializer | array|boolean | the functions used to serialize and unserialize cached data. | CCache |
| timeout | float | timeout to use for connection to redis. | CRedisCache |
| Method | Description | Defined By |
|---|---|---|
| __call() | Calls the named method which is not a class method. | CComponent |
| __get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent |
| __isset() | Checks if a property value is null. | CComponent |
| __set() | Sets value of a component property. | CComponent |
| __unset() | Sets a component property to be null. | CComponent |
| add() | Stores a value identified by a key into cache if the cache does not contain this key. | CCache |
| asa() | Returns the named behavior object. | CComponent |
| attachBehavior() | Attaches a behavior to this component. | CComponent |
| attachBehaviors() | Attaches a list of behaviors to the component. | CComponent |
| attachEventHandler() | Attaches an event handler to an event. | CComponent |
| canGetProperty() | Determines whether a property can be read. | CComponent |
| canSetProperty() | Determines whether a property can be set. | CComponent |
| delete() | Deletes a value with the specified key from cache | CCache |
| detachBehavior() | Detaches a behavior from the component. | CComponent |
| detachBehaviors() | Detaches all behaviors from the component. | CComponent |
| detachEventHandler() | Detaches an existing event handler. | CComponent |
| disableBehavior() | Disables an attached behavior. | CComponent |
| disableBehaviors() | Disables all behaviors attached to this component. | CComponent |
| enableBehavior() | Enables an attached behavior. | CComponent |
| enableBehaviors() | Enables all behaviors attached to this component. | CComponent |
| evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent |
| executeCommand() | Executes a redis command. | CRedisCache |
| flush() | Deletes all values from cache. | CCache |
| get() | Retrieves a value from cache with a specified key. | CCache |
| getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
| getIsInitialized() | Checks if this application component has been initialized. | CApplicationComponent |
| hasEvent() | Determines whether an event is defined. | CComponent |
| hasEventHandler() | Checks whether the named event has attached handlers. | CComponent |
| hasProperty() | Determines whether a property is defined. | CComponent |
| init() | Initializes the application component. | CCache |
| mget() | Retrieves multiple values from cache with the specified keys. | CCache |
| offsetExists() | Returns whether there is a cache entry with a specified key. | CCache |
| offsetGet() | Retrieves the value from cache with a specified key. | CCache |
| offsetSet() | Stores the value identified by a key into cache. | CCache |
| offsetUnset() | Deletes the value with the specified key from cache | CCache |
| raiseEvent() | Raises an event. | CComponent |
| set() | Stores a value identified by a key into cache. | CCache |
| Method | Description | Defined By |
|---|---|---|
| addValue() | Stores a value identified by a key into cache if the cache does not contain this key. | CRedisCache |
| connect() | Establishes a connection to the redis server. | CRedisCache |
| deleteValue() | Deletes a value with the specified key from cache | CRedisCache |
| flushValues() | Deletes all values from cache. | CRedisCache |
| generateUniqueKey() | CCache | |
| getValue() | Retrieves a value from cache with a specified key. | CRedisCache |
| getValues() | Retrieves multiple values from cache with the specified keys. | CRedisCache |
| setValue() | Stores a value identified by a key in cache. | CRedisCache |
public int $database;
the redis database to use. This is an integer value starting from 0. Defaults to 0.
public string $hostname;
hostname to use for connecting to the redis server. Defaults to 'localhost'.
public int $options;
the options to pass to the flags parameter of stream_socket_client when connecting to the redis server. Defaults to STREAM_CLIENT_CONNECT.
public string $password;
the password to use to authenticate with the redis server. If not set, no AUTH command will be sent.
public int $port;
the port to use for connecting to the redis server. Default port is 6379.
public float $timeout;
timeout to use for connection to redis. If not set the timeout set in php.ini will be used: ini_get("default_socket_timeout")
protected boolean addValue(string $key, string $value, integer $expire) | ||
| $key | string | the key identifying the value to be cached |
| $value | string | the value to be cached |
| $expire | integer | the number of seconds in which the cached value will expire. 0 means never expire. |
| {return} | boolean | true if the value is successfully stored into cache, false otherwise |
protected function addValue($key,$value,$expire)
{
if ($expire == 0)
return (bool)$this->executeCommand('SETNX',array($key,$value));
if($this->executeCommand('SETNX',array($key,$value)))
{
$this->executeCommand('EXPIRE',array($key,$expire));
return true;
}
else
return false;
}
Stores a value identified by a key into cache if the cache does not contain this key. This is the implementation of the method declared in the parent class.
protected void connect() |
protected function connect()
{
$this->_socket=@stream_socket_client(
$this->hostname.':'.$this->port,
$errorNumber,
$errorDescription,
$this->timeout ? $this->timeout : ini_get("default_socket_timeout"),
$this->options
);
if ($this->_socket)
{
if($this->password!==null)
$this->executeCommand('AUTH',array($this->password));
$this->executeCommand('SELECT',array($this->database));
}
else
{
$this->_socket = null;
throw new CException('Failed to connect to redis: '.$errorDescription,(int)$errorNumber);
}
}
Establishes a connection to the redis server. It does nothing if the connection has already been established.
protected boolean deleteValue(string $key) | ||
| $key | string | the key of the value to be deleted |
| {return} | boolean | if no error happens during deletion |
protected function deleteValue($key)
{
return (bool)$this->executeCommand('DEL',array($key));
}
Deletes a value with the specified key from cache This is the implementation of the method declared in the parent class.
public array|bool|null|string executeCommand(string $name, array $params=array ( )) | ||
| $name | string | the name of the command |
| $params | array | list of parameters for the command |
| {return} | array|bool|null|string | Dependend on the executed command this method will return different data types:
|
public function executeCommand($name,$params=array())
{
if($this->_socket===null)
$this->connect();
array_unshift($params,$name);
$command='*'.count($params)."\r\n";
foreach($params as $arg)
$command.='$'.$this->byteLength($arg)."\r\n".$arg."\r\n";
fwrite($this->_socket,$command);
return $this->parseResponse(implode(' ',$params));
}
Executes a redis command. For a list of available commands and their parameters see http://redis.io/commands.
protected boolean flushValues() | ||
| {return} | boolean | whether the flush operation was successful. |
protected function flushValues()
{
return $this->executeCommand('FLUSHDB');
}
Deletes all values from cache. This is the implementation of the method declared in the parent class.
protected string|boolean getValue(string $key) | ||
| $key | string | a unique key identifying the cached value |
| {return} | string|boolean | the value stored in cache, false if the value is not in the cache or expired. |
protected function getValue($key)
{
return $this->executeCommand('GET',array($key));
}
Retrieves a value from cache with a specified key. This is the implementation of the method declared in the parent class.
protected array getValues(array $keys) | ||
| $keys | array | a list of keys identifying the cached values |
| {return} | array | a list of cached values indexed by the keys |
protected function getValues($keys)
{
$response=$this->executeCommand('MGET',$keys);
$result=array();
$i=0;
foreach($keys as $key)
$result[$key]=$response[$i++];
return $result;
}
Retrieves multiple values from cache with the specified keys.
protected boolean setValue(string $key, string $value, integer $expire) | ||
| $key | string | the key identifying the value to be cached |
| $value | string | the value to be cached |
| $expire | integer | the number of seconds in which the cached value will expire. 0 means never expire. |
| {return} | boolean | true if the value is successfully stored into cache, false otherwise |
protected function setValue($key,$value,$expire)
{
if ($expire==0)
return (bool)$this->executeCommand('SET',array($key,$value));
return (bool)$this->executeCommand('SETEX',array($key,$expire,$value));
}
Stores a value identified by a key in cache. This is the implementation of the method declared in the parent class.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CRedisCache