CCache
CCache is the base class for cache classes with different cache storage implementation.
A data item can be stored in cache by calling
set and be retrieved back
later by
get. In both operations, a key identifying the data item is required.
An expiration time and/or a dependency can also be specified when calling
set.
If the data item expires or the dependency changes, calling
get will not
return back the data item.
Note, by definition, cache does not ensure the existence of a value
even if it does not expire. Cache is not meant to be a persistent storage.
CCache implements the interface
ICache with the following methods:
- get : retrieve the value with a key (if any) from cache
- set : store the value with a key into cache
- add : store the value only if cache does not have this key
- delete : delete the value with the specified key from cache
- flush : delete all values from cache
Child classes must implement the following methods:
CCache also implements ArrayAccess so that it can be used like an array.
Protected Methods
Hide inherited methods
| Method | Description | Defined By |
| addValue() |
Stores a value identified by a key into cache if the cache does not contain this key. |
CCache |
| deleteValue() |
Deletes a value with the specified key from cache |
CCache |
| generateUniqueKey() |
|
CCache |
| getValue() |
Retrieves a value from cache with a specified key. |
CCache |
| getValues() |
Retrieves multiple values from cache with the specified keys. |
CCache |
| setValue() |
Stores a value identified by a key in cache. |
CCache |
Property Details
public string $keyPrefix;
a string prefixed to every cache key so that it is unique. Defaults to application ID.
Method Details
public boolean add(string $id, mixed $value, integer $expire=0, ICacheDependency $dependency=NULL)
|
| $id |
string |
the key identifying the value to be cached |
| $value |
mixed |
the value to be cached |
| $expire |
integer |
the number of seconds in which the cached value will expire. 0 means never expire. |
| $dependency |
ICacheDependency |
dependency of the cached item. If the dependency changes, the item is labeled invalid. |
| {return} |
boolean |
true if the value is successfully stored into cache, false otherwise |
Stores a value identified by a key into cache if the cache does not contain this key.
Nothing will be done if the cache already contains the key.
|
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 |
Stores a value identified by a key into cache if the cache does not contain this key.
This method should be implemented by child classes to store the data
in specific cache storage. The uniqueness and dependency are handled
in add() already. So only the implementation of data storage
is needed.
|
public boolean delete(string $id)
|
| $id |
string |
the key of the value to be deleted |
| {return} |
boolean |
if no error happens during deletion |
Deletes a value with the specified key from cache
|
protected boolean deleteValue(string $key)
|
| $key |
string |
the key of the value to be deleted |
| {return} |
boolean |
if no error happens during deletion |
Deletes a value with the specified key from cache
This method should be implemented by child classes to delete the data from actual cache storage.
Deletes all values from cache.
Be careful of performing this operation if the cache is shared by multiple applications.
Child classes may implement this method to realize the flush operation.
|
protected sring generateUniqueKey(string $key)
|
| $key |
string |
a key identifying a value to be cached |
| {return} |
sring |
a key generated from the provided key which ensures the uniqueness across applications |
|
public mixed get(string $id)
|
| $id |
string |
a key identifying the cached value |
| {return} |
mixed |
the value stored in cache, false if the value is not in the cache, expired or the dependency has changed. |
Retrieves a value from cache with a specified key.
|
protected string getValue(string $key)
|
| $key |
string |
a unique key identifying the cached value |
| {return} |
string |
the value stored in cache, false if the value is not in the cache or expired. |
Retrieves a value from cache with a specified key.
This method should be implemented by child classes to retrieve the data
from specific cache storage. The uniqueness and dependency are handled
in get() already. So only the implementation of data retrieval
is needed.
|
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 |
Retrieves multiple values from cache with the specified keys.
The default implementation simply calls getValue multiple
times to retrieve the cached values one by one.
If the underlying cache storage supports multiget, this method should
be overridden to exploit that feature.
Initializes the application component.
This method overrides the parent implementation by setting default cache key prefix.
|
public array mget(array $ids)
|
| $ids |
array |
list of keys identifying the cached values |
| {return} |
array |
list of cached values corresponding to the specified keys. The array
is returned in terms of (key,value) pairs.
If a value is not cached or expired, the corresponding array value will be false. |
Retrieves multiple values from cache with the specified keys.
Some caches (such as memcache, apc) allow retrieving multiple cached values at one time,
which may improve the performance since it reduces the communication cost.
In case a cache doesn't support this feature natively, it will be simulated by this method.
|
public boolean offsetExists(string $id)
|
| $id |
string |
a key identifying the cached value |
| {return} |
boolean |
|
Returns whether there is a cache entry with a specified key.
This method is required by the interface ArrayAccess.
|
public mixed offsetGet(string $id)
|
| $id |
string |
a key identifying the cached value |
| {return} |
mixed |
the value stored in cache, false if the value is not in the cache or expired. |
Retrieves the value from cache with a specified key.
This method is required by the interface ArrayAccess.
|
public void offsetSet(string $id, mixed $value)
|
| $id |
string |
the key identifying the value to be cached |
| $value |
mixed |
the value to be cached |
Stores the value identified by a key into cache.
If the cache already contains such a key, the existing value will be
replaced with the new ones. To add expiration and dependencies, use the set() method.
This method is required by the interface ArrayAccess.
|
public boolean offsetUnset(string $id)
|
| $id |
string |
the key of the value to be deleted |
| {return} |
boolean |
if no error happens during deletion |
Deletes the value with the specified key from cache
This method is required by the interface ArrayAccess.
public boolean set(string $id, mixed $value, integer $expire=0, ICacheDependency $dependency=NULL)
|
| $id |
string |
the key identifying the value to be cached |
| $value |
mixed |
the value to be cached |
| $expire |
integer |
the number of seconds in which the cached value will expire. 0 means never expire. |
| $dependency |
ICacheDependency |
dependency of the cached item. If the dependency changes, the item is labeled invalid. |
| {return} |
boolean |
true if the value is successfully stored into cache, false otherwise |
Stores a value identified by a key into cache.
If the cache already contains such a key, the existing value and
expiration time will be replaced with the new ones.
|
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 |
Stores a value identified by a key in cache.
This method should be implemented by child classes to store the data
in specific cache storage. The uniqueness and dependency are handled
in set() already. So only the implementation of data storage
is needed.