jkehres / memcached-elasticache

A memcached client with support for auto-discovery of AWS ElastiCache nodes
9 stars 6 forks source link

memcached-elasticache

Drop-in replacement for memcached module (a fully featured Memcached client for Node.js) that adds support for auto-discovery of nodes in an AWS ElastiCache cluster running the Memcached engine. Works with all AWS supported cache engine versions.

Installation

npm install memcached-elasticache

Setting up the client

The constructor of the client takes two arguments server locations and options:

const Memcached = require('memcached-elasticache');
const memcached = new Memcached(Server locations, options);

Server locations

When auto-discovery is enabled (default), specify the configuration endpoint of the cluster as a string in the following format: hostname:port. The configuration endpoint will be polled at regular intervals (see autoDiscoverInterval option) to detect changes to the cluster. Nodes will be automatically added/removed from the client accordingly.

When auto-discovery is disabled, same as memcached module - specify one or more nodes that make up your cluster.

Options

Same as memcached module with the following extra options:

autoDiscover

A flag indicating whether the client should automatically discover the nodes of the cluster or not. If false, client behaviour is identical to memcached module and you must manually specify the nodes of the cluster when constructing the client. Defaults to true.

autoDiscoverInterval

The number of milliseconds between attempts to discover changes to the cluster - added/removed nodes. When auto-discovery is disabled, no polling occurs and this value is ignored. Defaults to 60000 (i.e. one minute).

autoDiscoverOverridesRemove

A flag indicating whether a dead node removed via the remove config option can be re-added by auto-discovery. When auto-discovery is disabled, this value is ignored. Defaults to false.

API

Same as memcached module - except private methods are not exposed.

NOTE: When auto-discovery is enabled, calling end() stops the polling for changes to the cluster in addition to closing all active connections.

Events

Same as memcached module with the following extra events:

autoDiscover

Emitted when a change to the cluster is detected - added/removed nodes. Payload is an array of server locations for the current nodes in the cluster. When auto-discovery is disabled, this event is not emitted.

autoDiscoverFailure

Emitted when a error occurs while attempting to check for changes to the cluster. Payload is an Error object. When auto-discovery is disabled, this event is not emitted.