首页 > 代码库 > memcached使用
memcached使用
简介:
利用memcached可以实现缓存服务器,memcached利用TCP将缓存存储在其他服务器中,且memcached是利用内存看空间来保存缓存数据的,减少了不必要的磁盘I/O。另外,memcached在存储区中对于每一个key都维护一个过期时间,一旦达到这个过期时间,memcached便会自动删除该key,方便了我们的过期检查机制的实现,只需在保存缓存数据时指定过期时间即可。
使用memcache的两种实现jar包:
1、使用net.py.spymemcached:
1)在pom.xml中添加对net.py.spymemcached的依赖;
<dependency> <groupId>net.spy</groupId> <artifactId>spymemcached</artifactId> <version>2.11.0</version></dependency>
2)使用Demo:
1 package spymemcached; 2 3 import java.io.IOException; 4 import java.io.Serializable; 5 import java.net.InetSocketAddress; 6 import java.util.Date; 7 8 import net.spy.memcached.MemcachedClient; 9 10 public class MemcacheUse {11 private static class MyData implements Serializable {12 private static final long serialVersionUID = 1L;13 private long d = new Date().getTime();14 15 public String toString() {16 return "my data [" + d + "]" ;17 }18 }19 20 public static void main(String[] args) throws IOException {21 MyData myData = http://www.mamicode.com/new MyData();22 MemcachedClient c = new MemcachedClient (new InetSocketAddress(23 "127.0.0.1", 11211));24 // Store a value (async) for one hour25 c.set( "someKey", 3600, myData);26 // Retrieve a value (synchronously).27 MyData myObject = (MyData) c.get( "someKey");28 c.shutdown();29 System. out.println(myObject.toString());30 }31 }
3)使用Demo,根据需求进行封装的类:
1 package com.practice.cache; 2 3 import java.io.IOException; 4 import java.net.InetSocketAddress; 5 6 import org.springframework.stereotype.Component; 7 8 import net.spy.memcached.MemcachedClient; 9 import net.spy.memcached.internal.OperationFuture;10 11 @Component12 public class PhonePtCache {13 private MemcachedClient client;14 15 private String hostName = "127.0.0.1";16 private int port = 11211;17 private int time = 3600;18 19 public PhonePtCache() {20 try {21 client = new MemcachedClient(new InetSocketAddress(hostName,port));22 } catch (IOException e) {23 e.printStackTrace();24 }25 }26 27 public OperationFuture<Boolean> set(String key, Object o) {28 return client.set(key, time, o);29 }30 31 public Object get(String key) {32 return client.get(key);33 }34 35 public OperationFuture<Boolean> delete(String key) {36 return client.delete(key);37 }38 }
2、使用com.whalin.Memcached-Java-Client
1)在pom.xml中添加依赖:
<dependency> <groupId>com.whalin</groupId> <artifactId>Memcached-Java-Client</artifactId> <version>3.0.2</version></dependency>
2)使用Demo
1 package spymemcached; 2 3 import com.whalin.MemCached.MemCachedClient; 4 import com.whalin.MemCached.SockIOPool; 5 6 public class MemCacheInvoke { 7 protected static MemCachedClient mcc = new MemCachedClient(); 8 static{ 9 // 设置缓存服务器列表,当使用分布式缓存的时,可以指定多个缓存服务器。(这里应该设置为多个不同的服务器)10 String[] servers =11 {12 "127.0.0.1:11211",13 };14 15 // 设置服务器权重16 Integer[] weights = {3, 2};17 // 创建一个Socked连接池实例18 SockIOPool pool = SockIOPool. getInstance();19 // 向连接池设置服务器和权重20 pool.setServers(servers);21 pool.setWeights(weights);22 // set some TCP settings23 // disable nagle24 // set the read timeout to 3 secs25 // and don‘t set a connect timeout26 pool.setNagle( false);27 pool.setSocketTO(3000);28 pool.setSocketConnectTO(0);29 // initialize the connection pool30 pool.initialize();31 }32 33 public static void main(String[] args) {34 mcc.set("foo" , "This is a test String" );35 String bar = mcc.get("foo" ).toString();36 System. out.println(">>> " + bar);37 }38 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。