Add memcachedcloud to your project:
heroku addons:add memcachedcloud
1. Setup Memcached Configuration
2. Setup Memcached Service
1. Setup Memcached Configuration
package com.example.cache; import java.io.IOException; import net.spy.memcached.AddrUtil; import net.spy.memcached.ConnectionFactoryBuilder; import net.spy.memcached.MemcachedClient; import net.spy.memcached.auth.AuthDescriptor; import net.spy.memcached.auth.PlainCallbackHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class CacheConfiguration { @Bean public MemcachedClient memcachedCloudConfiguration() { try { AuthDescriptor ad = new AuthDescriptor(new String[] { "PLAIN" }, new PlainCallbackHandler(System.getenv("MEMCACHEDCLOUD_USERNAME"), System.getenv("MEMCACHEDCLOUD_PASSWORD"))); MemcachedClient mc = new MemcachedClient( new ConnectionFactoryBuilder() .setProtocol(ConnectionFactoryBuilder.Protocol.BINARY) .setAuthDescriptor(ad).build(), AddrUtil.getAddresses(System.getenv("MEMCACHEDCLOUD_SERVERS"))); return mc; } catch (IOException ex) { // the Memcached client could not be initialized. } return null; } }
2. Setup Memcached Service
package com.example.cache; import java.math.BigInteger; import java.util.Collection; import java.util.List; import java.util.Map; import net.spy.memcached.MemcachedClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Import; import org.springframework.stereotype.Service; import com.example.model.Customer; import com.example.service.CustomerService; @Service @Import({CacheConfiguration.class}) public class CacheCustomerService implements CustomerService{ @Autowired MemcachedClient memCachedClient; @Override public Customer getCustomerById(BigInteger id) { return (Customer) memCachedClient.get(String.valueOf(id)); } @Override public void createCustomer(String fn, String ln) { memCachedClient.set("customerKey", 3600, new Customer(fn, ln)); } @Override public void deleteCustomer(BigInteger id) { memCachedClient.delete(String.valueOf(id)); } @Override public void createCustomer(Customer newCustomer) { memCachedClient.set("customerKey", 3600, newCustomer); } }