我是Memcache的新手。我刚用Java测试了Memcache,它运行正常。我想将MySQL查询结果存储在Memcache密钥中。我怎么能这样做?
答案 0 :(得分:0)
如果我有这样做的倾向,我会使用ByteArray [输出/输入]流和对象[输出/输入]流编写快速串行器/解串器,并使用memcache存储生成的字节数组。您可能需要将结果读入数组,然后序列化以执行此操作,但尝试查看哪些有效。
IMO你可能最好使用某种形式的JPA,它会为你处理缓存问题,而不会出现可能过时的缓存问题。如果可以,请查看Hibernate / Eclipselink,因为这可能会为您提供更好的性能(更少的序列化)并避免过时的缓存问题。
JBoss Cache也可以处理pojos,因此如果您的数据由java对象(JPA始终是)表示,您可以将结果存储在JBoss Cache中。 POJO可以很容易地序列化,也可以存储在memcached中。
我上面提到的选项是:
答案 1 :(得分:0)
如果您使用Spymemcached,那么您只需将查询结果放入Serializable对象并将其发送到memcached。例如,
client.set(“keyname”,0,object);
其中对象的类型是保存查询结果的可序列化对象。 Spymemcached将负责执行所有序列化,当您稍后获取对象时,Spymemcached将为您反序列化该对象。
答案 2 :(得分:0)
import net.spy.memcached.MemcachedClient;
public class memfunc implements java.io.Serializable{
Connection conn;
private int urlid;
private String er;
private static MemcachedClient c = null;
static {
try {
c = new MemcachedClient(new InetSocketAddress("127.0.0.1",11211));
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
}
public float[][] avgInfo(){
String key=host;
host=hostParser(host);
String[] info=new String[6];
if(c.get(key)==null && key==host){
---------your code----
Future<Boolean> set= c.set(key, 3600, info);
}
return (String[]) c.get(key);}