### Memcache Cache

code

docs

tests

EntityStore cache backed by a Memcache server like Memcached.

Memcached is an in-memory key-value store for small chunks of arbitrary data. By default, entities serialized state must not exceed 1MB.

Other implementations such as MemCachier have different peculiarities, see their documentation.

Table 59. Artifact

Group ID | Artifact ID | Version
--- | --- | ---
org.qi4j.extension | org.qi4j.extension.cache-memcache | 2.1

Not all EntityStore implementations use the Cache extension, so check the implementation details of the EntityStore whether the cache extension can bring any benefits or not.

#### Assembly

Assembly is done using the `MemcacheAssembler`:

    public void assemble( ModuleAssembly module )
        throws AssemblyException
    {
    [...snip...]

        new MemcacheAssembler().
            visibleIn( Visibility.module ).
            withConfig( confModule, Visibility.layer ).
            assemble( module );
            [...snip...]

    }

#### Configuration

Here are the configuration properties for the Memcache EntityStore Cache:

    public interface MemcacheConfiguration
        extends Configuration<MemcachePoolService>
    {
        /**
         * Cached items expiration in seconds.
         * Defaulted to 3600 seconds, one hour.
         * @return Cached items expiration configuration property
         */
        @Optional
        Property<Integer> expiration();

        /**
         * Memcached server addresses space separated.
         * Eg. {@literal "server1:11211 server2:11211"}.
         * Defaulted to {@literal "127.0.0.1:11211"}.
         * @return Memcached server addresses configuration property
         */
        @Optional
        Property<String> addresses();

        /**
         * Memcache Protocol.
         * Can be {@literal text} or {@literal binary}
         * Defaulted to {@literal text}.
         * @return Memcache Protocol configuration property
         */
        @Optional
        Property<String> protocol();

        /**
         * Username.
         * Authentication happens only if set.
         * @return Username configuration property
         */
        @Optional
        Property<String> username();

        /**
         * Password.
         * @return Password configuration property
         */
        @Optional
        Property<String> password();

        /**
         * SASL authentication mechanism.
         * Defaulted to PLAIN.
         * @return Authentication mechanism configuration property
         */
        @Optional
        Property<String> authMechanism();
    }

As you can see both ASCII and binary flavours of the Memcache protocol are supported as well as SASL authentication.