Using Memcached For Caching

Article Topics: Setup

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

Please Note: If you currently use 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 your server host can do.

Please Note: PHP has two different functions; memcache and memcached. NATS supports both extensions. To use Memcache, you will need to add the following to your NATS config file:

$config['MEMCACHE_USE_MEMCACHE'] = TRUE;

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

Using Memcached in NATS

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, which can be seen in the following example codes:

Passing memcache_server as one IP:

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

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

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

In the above example, you can see the IP (127.0.0.1), 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 set up individual memcached instances. For example, if you have two installs, #1 is on port 11211, and #2 is on 11311. Please ensure 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.

Last updated

Was this helpful?