前言
bala bala…
vertx是什么
vert.x是一个全异步框架,通过内部的event bus跟event loop做到了处处皆异步。关于里面的细节,后面我会出一篇文章详细跟大家探讨…
为什么要用vertx
充分利用机器性能,提升应用的吞吐量上限。
vertx-redis-client是什么
通俗来讲,vertx-redis提供了一个全异步
的可配置的redis客户端
vertx-redis-client有哪些特性
相对常规的jedis或者Lettuce来说,这里的特性其实就是vertx贯穿全局的特性:异步。当我们调用api发送一条redis指令的时候,可以不用等待
redis的响应,只需要绑定一个回调函数
,程序就可以继续往下执行。当拿到redis的响应之后,就会触发这个回调。当然,像这种编程方式,需要把业务依赖关系
处理得很明确,因为我们必须把依赖这个redis响应的所有处理都移到这个回调函数里去。
怎么使用vertx-redis-client
添加vertx-redis-client依赖
//gradle
compile("io.vertx:vertx-redis-client:$version")
//maven
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-redis-client</artifactId>
<vertion></version>
</dependency>
RedisConnection
RedisConnection是vertx-redis-client里暴露出来可操作redis的最基本的一组api了,使用如下
Redis
.createClient(Vertx.vertx(), "redis://ip:port")
.connect(onConnect -> {
//连接成功
if (onConnect.succeeded()) {
//获取连接实例
RedisConnection conn = onConnect.result();
//创建redis get指令.
Request command = Request.cmd(Command.GET);
//添加指令参数aa. 最后到达redis的指令就是get aa
command.arg("aa");
//发送指令
conn.send(command, resp -> {
//执行成功
if (resp.succeeded()) {
//拿到指令执行结果
Response result = resp.result();
}
});
}
});
这里就谈谈怎么使用吧,其实内部的实现就是通过netty包装的channel跟redis建立起连接,有兴趣的朋友可以点进去看看。
redisOptions
在介绍该redisClient各种模式之前,我们需要了解options是什么。
简单来说,redisOptions是我们用来定制该redisClient的一种方式,像之前我们通过Redis.createClient(Vertx.vertx(), “redis://ip:port”) 这种仅仅提供一个地址的方式就建立起了一个redisClient,但是如果我们想要定制更复杂的redisClient呢?这个时候就需要用到redisOptions了
各项主要配置的含义
先大概看下redisOptions都有哪些属性:
public class RedisOptions {
/**
* The default redis endpoint = {@code redis://localhost:6379}
*/
public static final String DEFAULT_ENDPOINT = "redis://localhost:6379";
private RedisClientType type;
private NetClientOptions netClientOptions;
private List<String> endpoints;
private int maxWaitingHandlers;
private int maxNestedArrays;
private String masterName;
private RedisRole role;
private RedisSlaves slaves;
private String password;
// pool related options
private int poolCleanerInterval;
private int maxPoolSize;
private int maxPoolWaiting;
private int poolRecycleTimeout;
}
type
该枚举用于指定redisClient以什么模式去连接server,这里