我有以下代碼在GAE上工作。從memcache獲取項目時,我只能得到5到20個結果的30 ms的延遲。這不是太高嗎?無論如何,我可以改善它嗎?Memcache延遲時間太長?
@SuppressWarnings({ "unchecked"})
@ApiMethod(name = "queryDesire2")
public List<String> queryDesire2(
@Nullable @Named("name2") String name2){
EntityManager mgr = getEntityManager();
List<String> list1=new ArrayList<String>();
Key userKey=null;
Long x=0L;
List<Key> keysNew = new ArrayList<Key>();
MemcacheService memcache = MemcacheServiceFactory.getMemcacheService();
try {
userKey=KeyFactory.createKey(name2,1);
if (memcache.get(userKey)==null) {
Query query2 = mgr.createQuery("select d.good from Desire d where d.ctgry = :name2");
list1 = query2.setParameter("name2", name2).getResultList();
for (String d : list1){
x=x+1L;
userKey = KeyFactory.createKey(name2,x);
memcache.put(userKey, d);
memcache.put(name2+"no", x);
}
} else {
Long y=(Long) memcache.get(name2+"no");
for (x = 1L; x<=y; x++){
userKey=KeyFactory.createKey(name2,x);
keysNew.add(userKey);
}
Map mMap;
mMap = memcache.getAll(keysNew);
list1 = new ArrayList<String>(mMap.values());
}
}
finally {
mgr.close();
}
return list1;
}
編輯:
我從https://appengine.google.com/ ...日誌捕獲此快照。我認爲最重要的26ms是延遲。但我也意識到有cpu_usd:0.000035。我真正關心的是瞭解我的應用程序使用多少實例小時。有沒有公式或方法來計算?
您是如何計算Memcache調用的延遲的? – 2014-11-23 23:25:56
我只是檢查應用引擎控制檯日誌中給出的延遲時間。 – savante 2014-11-23 23:30:11
我沒有看到Memcache調用的單獨條目。如果你看看你的呼叫,你需要考慮你所做的所有其他事情,包括你的查詢。 – 2014-11-24 01:02:53