- Home
- About
- Testimonials
- Demos
- Download
- Documentation
- Blogs
- Forum
- Support

Packages:
default
System
System.Caching
System.Collections
System.Data
System.Data.ActiveRecord
System.Data.ActiveRecord.Relations
System.Data.ActiveRecord.Scaffold
System.Data.ActiveReecord.Scaffold.InputBuilder
System.Data.Commom.Sqlite
System.Data.Common
System.Data.Common.Mssql
System.Data.Common.Mysql
System.Data.Common.Oracle
System.Data.Common.Pgsql
System.Data.Common.Sqlite
System.Data.DataGateway
System.Data.SqlMap
System.Data.SqlMap.Configuration
System.Data.SqlMap.Statements
System.Exceptions
System.I18N
System.IO
System.Security
System.Util
System.Web
System.Web.Services
System.Web.UI
System.Web.UI.ActiveControls
System.Web.UI.WebControls
System.Web.UI.WebControls.assets
System.Xml
Classes:
TAPCCache
TApplicationStateCacheDependency
TCache
TCacheDependency
TCacheDependencyList
TChainedCacheDependency
TDbCache
TDirectoryCacheDependency
TFileCacheDependency
TGlobalStateCacheDependency
TMemCache
TSqliteCache
TXCache

Keyword

# Class TMemCache

    TComponent
       |
       --TApplicationComponent
          |
          --TModule
             |
             --TCache
                |
                --TMemCache

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,

     $cache=new TMemCache;  // TMemCache may also be loaded as a Prado application module
      $cache->init(null);
     $cache->add('object',$object);
     $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.

     <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.

     <module id="cache" classs="System.Caching.TMemCache">
         <server Host="localhost" Port="11211" Weight="1" Timeout="300" RetryInterval="15" />
         <server Host="anotherhost" Port="11211" Weight="1" Timeout="300" RetryInterval="15" />
     </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

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

where Host and Port are configurable properties of TMemCache.
Since: 3.0
Author: Qiang Xue <qiang.xue@gmail.com>

Method Summary
protected boolean | addValue ( string $key, string $value, integer $expire) Stores a value identified by a key into cache if the cache does not contain this key.
protected boolean | deleteValue ( string $key) Deletes a value with the specified key from cache This is the implementation of the method declared in the parent class.
void | flush () Deletes all values from cache.
string | getHost ()
integer | getPort ()
protected string | getValue ( string $key) Retrieves a value from cache with a specified key.
void | init ( TApplication $config, TXmlElement 1) Initializes this module.
void | setHost ( string $value)
void | setPort ( integer $value)
protected boolean | setValue ( string $key, string $value, integer $expire) Stores a value identified by a key in cache.

Methods Inherited From TCache
TCache::add(), TCache::delete(), TCache::flush(), TCache::generateUniqueKey(), TCache::get(), TCache::getKeyPrefix(), TCache::getPrimaryCache(), TCache::init(), TCache::offsetExists(), TCache::offsetGet(), TCache::offsetSet(), TCache::offsetUnset(), TCache::set(), TCache::setKeyPrefix(), TCache::setPrimaryCache(),

Methods Inherited From TModule
TModule::getID(), TModule::init(), TModule::setID()

Methods Inherited From TApplicationComponent
TApplicationComponent::getApplication(), TApplicationComponent::getRequest(), TApplicationComponent::getResponse(), TApplicationComponent::getService(), TApplicationComponent::getSession(), TApplicationComponent::getUser(), TApplicationComponent::publishAsset(), TApplicationComponent::publishFilePath()

Methods 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::__get(), TComponent::__set()

Method Details

## addValue

protected boolean addValue | (string $key , string $value , integer $expire )

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.

Input
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.
Output
boolean | true if the value is successfully stored into cache, false otherwise
Exception

## deleteValue

protected boolean deleteValue | (string $key )

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

Input
string | $key | the key of the value to be deleted
Output
boolean | if no error happens during deletion
Exception

## flush

public void flush | ()

Deletes all values from cache.

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

Output
Exception

## getHost

public string getHost | ()

Output
string | host name of the memcache server
Exception

## getPort

public integer getPort | ()

Output
integer | port number of the memcache server
Exception

## getValue

protected string getValue | (string $key )

Retrieves a value from cache with a specified key.

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

Input
string | $key | a unique key identifying the cached value
Output
string | the value stored in cache, false if the value is not in the cache or expired.
Exception

## init

public void init | (TApplication $config , TXmlElement 1 )

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.

Input
TApplication | $config | Prado application, can be null
TXmlElement | 1 | configuration for this module, can be null
Output
Exception
throws | TConfigurationException if memcache extension is not installed or memcache sever connection fails

## setHost

public void setHost | (string $value )

Input
string | $value | host name of the memcache server
Output
Exception
throws | TInvalidOperationException if the module is already initialized

## setPort

public void setPort | (integer $value )

Input
integer | $value | port number of the memcache server
Output
Exception
throws | TInvalidOperationException if the module is already initialized

## setValue

protected boolean setValue | (string $key , string $value , integer $expire )

Stores a value identified by a key in cache.

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

Input
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.
Output
boolean | true if the value is successfully stored into cache, false otherwise
Exception