// MembaseTest1 package tutorial;import java.net.InetSocketAddress;import net.spy.memcached.MemcachedClient;/*** Write / Read from Membase* * @author sujee**/public class MembaseTest1{ static int MAX = 100; static String server = "localhost"; static int port = 11211; public static void main(String[] args) throws Exception { MemcachedClient cache = new MemcachedClient(new InetSocketAddress(server, port)); cache.flush(); // 清除所有 long t1 = System.currentTimeMillis(); for (int i = 0; i < MAX; i++) { String s = new Integer(i).toString(); // key : integer converted to String (keys are always string) // time to live : in seconds, 3600 seconds (1h), 0 means no expiration // value : actual integer. This can be an object. Our integer will be converted to 'Integer' // class by 'auto boxing' proess Object o = cache.set(s, 0, i); System.out.println("cache put : " + s + " : " + i + ", result " + o); } long t2 = System.currentTimeMillis(); System.out.println("Time for " + MAX + " puts is " + (t2 - t1) + " ms"); t1 = System.currentTimeMillis(); int nulls = 0; for (int i = 0; i < MAX; i++) { String s = new Integer(i).toString(); Object o = cache.get(s); System.out.println("Cache get : " + s + " : " + o); if (o == null) nulls++; } t2 = System.currentTimeMillis(); cache.shutdown(); System.out.println("Time for " + MAX + " gets is " + (t2 - t1) + " ms. nulls " + nulls); }} 你可以在eclipse中運行這個文件(MembaseTest1)。或者從命令行執行
sh compile.sh sh run.sh or java -cp classes/:lib/memcached-2.5.jar tutorial.MembaseTest1Membase運行在本地,端口為11211(默認的memcached端口)
我們的鍵是一串字符型的數字,我們的對象是是整數型對象。
下面是輸出樣例:
我們密切注意NULL值。我們這次不應該獲得NULL,如我們所希望的null個數為0。
代碼也記錄了時間戳,我們可以看到操作是多麼得快。
// MembaseTest2package tutorial; import java.net.InetSocketAddress;import net.spy.memcached.MemcachedClient; /*** simulates writing / reading from two different clients*/public class MembaseTest2{ static int MAX = 1000; static String server = "localhost"; static int port = 11211; public static void main(String[] args) throws Exception { MemcachedClient cache = new MemcachedClient(new InetSocketAddress(server, port)); cache.flush(); // clear all long t1 = System.currentTimeMillis(); for (int i = 0; i < MAX; i++) { String s = new Integer(i).toString(); // key : integer converted to String (keys are always string) // time to live : in seconds, 3600 seconds (1h), 0 means no expiration // value : actual integer. This can be an object. Our integer will be converted to 'Integer' // class by 'auto boxing' proess Object o = cache.set(s, 0, i); System.out.println("cache put : " + s + " : " + i + ", result " + o); } long t2 = System.currentTimeMillis(); cache.shutdown(); // close the client System.out.println("Time for " + MAX + " puts is " + (t2 - t1) + " ms"); // open another connection cache = new MemcachedClient(new InetSocketAddress(server, port)); t1 = System.currentTimeMillis(); int nulls = 0; for (int i = 0; i < MAX; i++) { String s = new Integer(i).toString(); Object o = cache.get(s); System.out.println("Cache get : " + s + " : " + o); if (o == null) nulls++; } t2 = System.currentTimeMillis(); cache.shutdown(); System.out.println("Time for " + MAX + " gets is " + (t2 - t1) + " ms. nulls " + nulls + "\n"); }}java -cp classes/:lib/memcached-2.5.jar tutorial.MembaseTest2
......long t2 = System.currentTimeMillis();cache.shutdown(10, TimeUnit.SECONDS); // graceful shutdownSystem.out.println("Time for " + MAX + " puts is " + (t2 - t1) + " ms"); // open another connectioncache = new MemcachedClient(new InetSocketAddress(server, port));......