Using Memcached For Caching

From TMM Wiki
Jump to navigationJump to search
NATS Setup
Post-Installation Steps
Apache Configuration
MySQL Settings
Creating Admin Accounts
Multiple Server Setup
Using Memcached for Caching
File Upload Setup
Link Domain
NATS4 Files and Directories
NATS4 Go Live Checklist
NATS3 to NATS4 Going Live Checklist
Moving NATS4
Members Admin
The Members Admin
View Member Details
Add Member
MySQL Auth
Mod Authn DB
Multisite Access
Member Logging
Member Password Retrieval
OpenID Connect
Mod Auth OpenIDC
ID Numbers

NATS4 now offers a method to use the new PHP class Memcached for caching certain integrated database functions. These include functions such as nats_get_identid and nats_identid_details. Using Memcached allows you to temporarily store data and access information in RAM of your server as opposed to the hard disk -- this will speed up your database.

NOTE: If you are currently using memcache for session handling, a different memcache port or server must be used with Nats.

To use memcached, you must first install and configure the PHP extension "memcached" on your server, which can be done by your server host.

NOTE: PHP has two different functions-- memcache and memcached. NATS only supports the memcached extension, so make sure you install memcached and not memcache.

Using the Memcached extension will allow PHP to force your server to store a surfer's session information in memcached for faster recall, as opposed to storing your session information in the database.

Using Memcached in NATS

You MUST be on version or higher to enable this feature.

To use Memcached in NATS, you must set your config variables, as well as the expire variable:

  • MEMCACHE_SERVER - What server IP memcached is configured on.
  • MEMCACHE_PORT - The port that memcached can be accessed on.
  • MEMCACHE_EXPIRE - The number of seconds before your cache data is reset.

You can pass memcache_server as one IP, or an array of IPs, ports, and priority as can be seen in the following example codes:

Passing memcache_server as one IP:

$config['MEMCACHE_SERVER'] = '';
$config['MEMCACHE_PORT'] = 11211;

Passing memcache_server as an array of IPs, ports, and priority:

$config['MEMCACHE_SERVER'] = Array(
array('', 11211, 33),
array('', 11211, 67)

In the above example, you can see the IP (, the port (11211), and the priority (33) of the array. Priority here works similarly to cascade weights; the higher the weight, the more likely that server is to be chosen. Once you have defined your config variables, you must also define MEMCACHE_EXPIRE, which can be seen in the following example code:

$config['MEMCACHE_EXPIRE'] = 86400;

In the above example, your memcached session would expire in 86,400 seconds.

If you have more than one NATS install on a server then you need to setup individual memcached instances. For example if you have two #1 is on port 11211 and #2 would be on 11311. Please make sure that you aren't using the same port if you have more than one NATS install on the server.

NATS is currently configured to cache queries that are run doing the surfer process that return the same results, such as selecting a site ID for your shortname, and selecting a return URL for a tour. It can also cache core functionalities in NATS that return the same data.

In the future, this feature will be built up over time to encompass more aspects of NATS.

NOTE: You must be on NATS in order to use memcached in NATS.