我正在使用redis与Akka,所以我不需要阻止调用.生菜具有内置的异步未来调用.但是Jedis是Redis的推荐客户.如果我以正确的方式使用它们,有人可以告诉我.如果是这样哪一个更好.
JEDIS 我使用静态Jedis连接池来获取con并使用Akka将来的回调来处理结果.我关心的是当我使用另一个线程(可调用)来获取线程最终将阻塞结果的结果时.虽然生菜可能有一些更有效的方法来做到这一点.
private final class OnSuccessExtension extends OnSuccess<String> {
private final ActorRef senderActorRef;
private final Object message;
@Override
public void onSuccess(String valueRedis) throws Throwable {
log.info(getContext().dispatcher().toString());
senderActorRef.tell((String) message, ActorRef.noSender());
}
public OnSuccessExtension(ActorRef senderActorRef,Object message) {
this.senderActorRef = senderActorRef;
this.message=message;
}
}
ActorRef senderActorRef = getSender(); //never close over a future
if (message instanceof String) {
Future<String> f =akka.dispatch.Futures.future(new Callable<String>() {
public String call() {
String result;
try(Jedis jedis=JedisWrapper.redisPool.getResource()) {
result = jedis.get("name");
}
return result;
}
}, ex);
f.onSuccess(new …Run Code Online (Sandbox Code Playgroud) 当在Cassandra中使用令牌感知策略作为负载平衡策略时,所有查询都会自动通过正确的节点发送(其中包含副本,例如select*from Table,其中partionkey = something,将自动获取散列并转到正确的副本)或我必须在我的所有查询中使用token()函数?
一个简单的程序
#include<stdio.h>
int main() {
char b='a';
printf("%s \n", b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
test.c: In function ‘main’:
test.c:4:1: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
printf("%s \n", b);
^
Run Code Online (Sandbox Code Playgroud)
但第二个arg char不是int.
这是编译器的错误警告,还是我遗漏的其他东西?