Refer:
Http://blog.csdn.net/lizhongkan/article/details/6033370
Http://brainfry.in/programming/memcached-java-examples/
For how to install the memcached service, see:
Install memcached on Ubuntu and windows
Put the Code directly:
Create a memcached connection class first. Make sure to enter the correct IP address and port of the memcached server.
import java.io.IOException;import java.net.InetSocketAddress;import java.util.concurrent.Future;import net.spy.memcached.MemcachedClient;public class MemClient { private static MemcachedClient client = null; static { try { client = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("CONNECTED TO SERVER"); } catch (IOException e) { e.printStackTrace(); System.exit(-1); } } public Future<Boolean> addToMemCache(String key, int timeOut, Object val) { Future<Boolean> future = client.set(key, timeOut, val); return future; } public Object getMemcachedValue(String key) { return client.get(key); }}
Create another usage class. The basic principle is to randomly generate 100 pairs of key-value pairs and check whether all of them are saved. After the specified expire period, read the data to check whether the stored data is invalid.
import java.util.ArrayList;import java.util.Random;import java.util.concurrent.ExecutionException;import java.util.concurrent.Future;import java.util.logging.Level;import java.util.logging.Logger;public class MemClientUser { private static ArrayList<String> keyStore = new ArrayList<String>(); private static ArrayList<Future<Boolean>> futures = new ArrayList<Future<Boolean>>(); private static int counter = 0; public static void main(String[] args) throws InterruptedException, ExecutionException { Logger.getLogger("net.spy.memcached").setLevel(Level.SEVERE); final MemClient memClient = new MemClient(); for (int i = 0; i < 100; i++) { final String key = getRandomKey(); final String value = getValueFromASource(); keyStore.add(key); Future<Boolean> future = memClient.addToMemCache(key, 10, value); try { future.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } if (future != null) { futures.add(future); counter++; } else System.out.println("future is null??"); } System.out.println("VALUES TRIED: " + counter); counter = 0; for (final String key : keyStore) { String val = (String) memClient.getMemcachedValue(key); if (val != null) counter++; } System.out.println("VALUES FOUND: " + counter); // This ensures the the values are expired Thread.sleep(10000); counter = 0; for (final String key : keyStore) { String val = (String) memClient.getMemcachedValue(key); if (val != null) counter++; } System.out.println("VALUES REMAINING: " + counter); } private static String getRandomKey() { return "RANDOM_KEY" + new Random().nextInt(99999); } private static String getValueFromASource() { // This function ideally would return a value from a database, or an API // call return "RANDOM_VALUE" + new Random().nextInt(99999); }}
The test results are as follows: