我想在memcached中使用spymemcached-2.8.4客戶端設置一個非常基本的命中率監視器,但存儲在memcached中的值實際上似乎從未增加......這是一個錯誤還是我錯過了什麼嗎?使用'incr'與spymemcached客戶端
public static void checkHitRate(String clientId) throws FatalException, ForbiddenException {
MemcachedClient memcachedClient;
try {
memcachedClient = new MemcachedClient(new InetSocketAddress("localhost", 11211));
Integer hitRate = (Integer) memcachedClient.get(clientId);
if (hitRate == null) {
memcachedClient.set(clientId, 1800, 1);
} else if (hitRate > 500) {
throw new ForbiddenException("Hit rate too high. Try again later");
} else if (hitRate <= 500) {
memcachedClient.incr(clientId, 1);
}
} catch (IOException e) {
throw new FatalException("Could not read hit rate from Memcached.");
}
}
我知道它可能在分佈式緩存:
(TELENT輸出)
set clientId_1 0 200 1
1
STORED
incr clientId_1 1
2
get clientId_1
VALUE clientId_1 0 1
2
END
您是否嘗試過使用telnet連接到memcached服務器並手動執行此操作?它工作嗎?請參閱memcached命令:http://www.javaworld.com/javaworld/jw-04-2012/120418-memcached-for-java-enterprise-performance.html?page=3 – user1697575
是的,它是defo可能的(請參閱編輯)。 .. – travega
嘗試啓用詳細模式爲memcached服務器(例如,在comman-line運行memcached -vv)查看在incr操作期間服務器上的錯誤(它抱怨「CLIENT_ERROR不能遞增或遞減非數值」)也在您的Java應用程序,你應該得到例外... – user1697575