Class TMemCache

Description

TMemCache class

TMemCache implements a cache application module based on memcached.

TMemCache can be configured with the Host and Port properties, which specify the host and port of the memcache server to be used. By default, they take the value 'localhost' and 11211, respectively. These properties must be set before init is invoked.

The following basic cache operations are implemented:

  • 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
Each value is associated with an expiration time. The get operation ensures that any expired value will not be returned. The expiration time can be specified by the number of seconds (maximum 60*60*24*30) or a UNIX timestamp. A expiration time 0 represents never expire.

By definition, cache does not ensure the existence of a value even if it never expires. Cache is not meant to be an persistent storage.

Also note, there is no security measure to protected data in memcache. All data in memcache can be accessed by any process running in the system.

To use this module, the memcache PHP extension must be loaded.

Some usage examples of TMemCache are as follows,

  1.  $cache=new TMemCache;  // TMemCache may also be loaded as a Prado application module
  2.  $cache->init(null);
  3.  $cache->add('object',$object);
  4.  $object2=$cache->get('object');

You can configure TMemCache two different ways. If you only need one memcache server you may use the method as follows.

  1.  <module id="cache" class="System.Caching.TMemCache" Host="localhost" Port="11211" />

If you want a more complex configuration, you may use the method as follows.

  1.  <module id="cache" classs="System.Caching.TMemCache">
  2.      <server Host="localhost" Port="11211" Weight="1" Timeout="300" RetryInterval="15" />
  3.      <server Host="anotherhost" Port="11211" Weight="1" Timeout="300" RetryInterval="15" />
  4.  </module>

If loaded, TMemCache will register itself with TApplication as the cache module. It can be accessed via TApplication::getCache().

TMemCache may be configured in application configuration file as follows

  1.  <module id="cache" class="System.Caching.TMemCache" Host="localhost" Port="11211" />
where Host and Port are configurable properties of TMemCache.

Automatic compression of values may be used (using zlib extension) by setting Threshold and MinSavings properties. NB : MemCache server(s) must be restarted to apply settings. Require (PECL memcache >= 2.0.0).

  • author: Qiang Xue <qiang.xue@gmail.com>
  • version: $Id: TMemCache.php 2996 2011-06-20 15:24:57Z ctrlaltca@gmail.com $
  • since: 3.0

Located in /Caching/TMemCache.php (line 84)

TComponent
   |
   --TApplicationComponent
      |
      --TModule
         |
         --TCache
            |
            --TMemCache
Method Summary
void __destruct ()
boolean addValue (string $key, string $value, integer $expire)
boolean deleteValue (string $key)
void flush ()
string getHost ()
float getMinSavings ()
integer getPort ()
integer getThreshold ()
string getValue (string $key)
void init (TApplication $config, TXmlElement 1)
void setHost (string $value)
void setMinSavings (float $value)
void setPort (integer $value)
void setThreshold (integer $value)
boolean setValue (string $key, string $value, integer $expire)
Methods
Destructor __destruct (line 143)

Destructor.

Disconnect the memcache server.

  • access: public
void __destruct ()
addValue (line 338)

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.

  • return: true if the value is successfully stored into cache, false otherwise
  • access: protected
boolean addValue (string $key, string $value, integer $expire)
  • string $key: the key identifying the value to be cached
  • string $value: the value to be cached
  • integer $expire: the number of seconds in which the cached value will expire. 0 means never expire.

Redefinition of:
TCache::addValue()
Stores a value identified by a key into cache if the cache does not contain this key.
deleteValue (line 349)

Deletes a value with the specified key from cache This is the implementation of the method declared in the parent class.

  • return: if no error happens during deletion
  • access: protected
boolean deleteValue (string $key)
  • string $key: the key of the value to be deleted

Redefinition of:
TCache::deleteValue()
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.
flush (line 358)

Deletes all values from cache.

Be careful of performing this operation if the cache is shared by multiple applications.

  • access: public
void flush ()

Redefinition of:
TCache::flush()
Deletes all values from cache.
getHost (line 227)
  • return: host name of the memcache server
  • access: public
string getHost ()
getMinSavings (line 287)
  • return: minimum amount of savings to actually store the value compressed
  • access: public
float getMinSavings ()
getPort (line 247)
  • return: port number of the memcache server
  • access: public
integer getPort ()
getThreshold (line 267)
  • return: minimum value length before attempting to compress
  • access: public
integer getThreshold ()
getValue (line 310)

Retrieves a value from cache with a specified key.

This is the implementation of the method declared in the parent class.

  • return: the value stored in cache, false if the value is not in the cache or expired.
  • access: protected
string getValue (string $key)
  • string $key: a unique key identifying the cached value

Redefinition of:
TCache::getValue()
Retrieves a value from cache with a specified key.
init (line 158)

Initializes this module.

This method is required by the IModule interface. It makes sure that UniquePrefix has been set, creates a Memcache instance and connects to the memcache server.

  • throws: TConfigurationException if memcache extension is not installed or memcache sever connection fails
  • access: public
void init (TApplication $config, TXmlElement 1)

Redefinition of:
TCache::init()
Initializes the cache module.
setHost (line 236)
  • throws: TInvalidOperationException if the module is already initialized
  • access: public
void setHost (string $value)
  • string $value: host name of the memcache server
setMinSavings (line 296)
  • throws: TInvalidOperationException if the module is already initialized
  • access: public
void setMinSavings (float $value)
  • float $value: minimum amount of savings to actually store the value compressed
setPort (line 256)
  • throws: TInvalidOperationException if the module is already initialized
  • access: public
void setPort (integer $value)
  • integer $value: port number of the memcache server
setThreshold (line 276)
  • throws: TInvalidOperationException if the module is already initialized
  • access: public
void setThreshold (integer $value)
  • integer $value: minimum value length before attempting to compress
setValue (line 324)

Stores a value identified by a key in cache.

This is the implementation of the method declared in the parent class.

  • return: true if the value is successfully stored into cache, false otherwise
  • access: protected
boolean setValue (string $key, string $value, integer $expire)
  • string $key: the key identifying the value to be cached
  • string $value: the value to be cached
  • integer $expire: the number of seconds in which the cached value will expire. 0 means never expire.

Redefinition of:
TCache::setValue()
Stores a value identified by a key in cache.

Inherited Methods

Inherited From TCache

TCache::add()
TCache::addValue()
TCache::delete()
TCache::deleteValue()
TCache::flush()
TCache::generateUniqueKey()
TCache::get()
TCache::getKeyPrefix()
TCache::getPrimaryCache()
TCache::getValue()
TCache::init()
TCache::offsetExists()
TCache::offsetGet()
TCache::offsetSet()
TCache::offsetUnset()
TCache::set()
TCache::setKeyPrefix()
TCache::setPrimaryCache()
TCache::setValue()

Inherited From TModule

TModule::getID()
TModule::init()
TModule::setID()

Inherited From TApplicationComponent

TApplicationComponent::getApplication()
TApplicationComponent::getRequest()
TApplicationComponent::getResponse()
TApplicationComponent::getService()
TApplicationComponent::getSession()
TApplicationComponent::getUser()
TApplicationComponent::publishAsset()
TApplicationComponent::publishFilePath()

Inherited From TComponent

TComponent::addParsedObject()
TComponent::attachEventHandler()
TComponent::canGetProperty()
TComponent::canSetProperty()
TComponent::createdOnTemplate()
TComponent::detachEventHandler()
TComponent::evaluateExpression()
TComponent::evaluateStatements()
TComponent::getEventHandlers()
TComponent::getSubProperty()
TComponent::hasEvent()
TComponent::hasEventHandler()
TComponent::hasProperty()
TComponent::raiseEvent()
TComponent::setSubProperty()
TComponent::__call()
TComponent::__get()
TComponent::__set()
TComponent::__sleep()
TComponent::__wakeup()

Documentation generated on Mon, 25 Jun 2012 14:38:43 +0200 by phpDocumentor 1.4.3