Chapter 16. The Memcached Interface

16.1. The Memcached Interface

Memcached is an in-memory caching system used to improve response and operation times for database-driven websites. The Memcached caching system defines a text based protocol called the Memcached protocol. The Memcached protocol uses in-memory objects or (as a last resort) passes to a persistent store such as a special memcached database.

Red Hat JBoss Data Grid offers a server that uses the Memcached protocol, removing the necessity to use Memcached separately with JBoss Data Grid. Additionally, due to JBoss Data Grid’s clustering features, its data failover capabilities surpass those provided by Memcached.

16.2. About Memcached Servers

Red Hat JBoss Data Grid contains a server module that implements the memcached protocol. This allows memcached clients to interact with one or multiple JBoss Data Grid based memcached servers.

The servers can be either:

  • Standalone, where each server acts independently without communication with any other memcached servers.
  • Clustered, where servers replicate and distribute data to other memcached servers.

16.3. Memcached Statistics

The following table contains a list of valid statistics available using the memcached protocol in Red Hat JBoss Data Grid.

Table 16.1. Memcached Statistics

StatisticData TypeDetails

uptime

32-bit unsigned integer.

Contains the time (in seconds) that the memcached instance has been available and running.

time

32-bit unsigned integer.

Contains the current time.

version

String

Contains the current version.

curr_items

32-bit unsigned integer.

Contains the number of items currently stored by the instance.

total_items

32-bit unsigned integer.

Contains the total number of items stored by the instance during its lifetime.

cmd_get

64-bit unsigned integer

Contains the total number of get operation requests (requests to retrieve data).

cmd_set

64-bit unsigned integer

Contains the total number of set operation requests (requests to store data).

get_hits

64-bit unsigned integer

Contains the number of keys that are present from the keys requested.

get_misses

64-bit unsigned integer

Contains the number of keys that were not found from the keys requested.

delete_hits

64-bit unsigned integer

Contains the number of keys to be deleted that were located and successfully deleted.

delete_misses

64-bit unsigned integer

Contains the number of keys to be deleted that were not located and therefore could not be deleted.

incr_hits

64-bit unsigned integer

Contains the number of keys to be incremented that were located and successfully incremented

incr_misses

64-bit unsigned integer

Contains the number of keys to be incremented that were not located and therefore could not be incremented.

decr_hits

64-bit unsigned integer

Contains the number of keys to be decremented that were located and successfully decremented.

decr_misses

64-bit unsigned integer

Contains the number of keys to be decremented that were not located and therefore could not be decremented.

cas_hits

64-bit unsigned integer

Contains the number of keys to be compared and swapped that were found and successfully compared and swapped.

cas_misses

64-bit unsigned integer

Contains the number of keys to be compared and swapped that were not found and therefore not compared and swapped.

cas_badval

64-bit unsigned integer

Contains the number of keys where a compare and swap occurred but the original value did not match the supplied value.

evictions

64-bit unsigned integer

Contains the number of eviction calls performed.

bytes_read

64-bit unsigned integer

Contains the total number of bytes read by the server from the network.

bytes_written

64-bit unsigned integer

Contains the total number of bytes written by the server to the network.

16.4. The Memcached Interface Connector

16.4.1. The Memcached Interface Connector

The following enables a Memcached server using the memcached socket binding, and exposes the memcachedCache cache declared in the local container, using defaults for all other settings.

<memcached-connector socket-binding="memcached"
		     cache-container="local"/>

Due to the limitations in the Memcached protocol, only one cache can be exposed by a connector. To expose more than one cache, declare additional memcached-connectors on different socket-bindings. See Configure Memcached Connectors.

16.4.2. Configure Memcached Connectors

The following procedure describes the attributes used to configure the memcached connector within the connectors element in Red Hat JBoss Data Grid’s Remote Client-Server Mode.

Configuring the Memcached Connector in Remote Client-Server Mode

The memcached-connector element defines the configuration elements for use with memcached.

<subsystem xmlns="urn:infinispan:server:endpoint:8.1">
<memcached-connector socket-binding="memcached"
                     cache-container="local"
                     worker-threads="${VALUE}"
                     idle-timeout="{SECONDS}"
                     tcp-nodelay="{TRUE/FALSE}"
                     send-buffer-size="{VALUE}"
                     receive-buffer-size="${VALUE}" />
</subsystem>
  1. The socket-binding parameter specifies the socket binding port used by the memcached connector. This is a mandatory parameter.
  2. The cache-container parameter names the cache container used by the memcached connector. This is a mandatory parameter.
  3. The worker-threads parameter specifies the number of worker threads available for the memcached connector. The default value for this parameter is 160. This is an optional parameter.
  4. The idle-timeout parameter specifies the time, in seconds, that the connector can remain idle before the connection times out. The default value for this parameter is 0, which means that no timeout period is set. This is an optional parameter.
  5. The tcp-nodelay parameter specifies whether TCP packets will be delayed and sent out in batches. Valid values for this parameter are true and false. The default value for this parameter is true. This is an optional parameter.
  6. The send-buffer-size parameter indicates the size of the send buffer for the memcached connector. The default value for this parameter is the size of the TCP stack buffer. This is an optional parameter.
  7. The receive-buffer-size parameter indicates the size of the receive buffer for the memcached connector. The default value for this parameter is the size of the TCP stack buffer. This is an optional parameter.