tra*_*ega 4 memcached counter increment hitcounter spymemcached
我正在尝试使用spymemcached-2.8.4客户端在memcached中设置一个非常基本的命中率监视器,但是存储在memcached中的值实际上似乎从未增加...这是一个错误还是我错过了什么?
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.");
}
}
Run Code Online (Sandbox Code Playgroud)
我知道它在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
Run Code Online (Sandbox Code Playgroud)
小智 6
对于incr/decr,memcached服务器将存储的值视为整数的字符串表示,
添加像
memcachedClient.set(clientId, 1800, 1);
Run Code Online (Sandbox Code Playgroud)
将值作为整数添加,这就是memcached无法增加它的原因.
使用
memcachedClient.set(clientId, 1800, "1");
Run Code Online (Sandbox Code Playgroud)
代替.它会按你的需要工作.