8.7. Eclipse Vert.x Redis 客户端的更改
在 Eclipse Vert.x 4 中,使用 Redis 类用于 Redis 客户端。class RedisClient 不再可用。
- 注意
-
为了帮助您将应用程序从
RedisClient迁移到Redis类,可以使用一个帮助程序类RedisAPI。RedisAPI可让您复制与RedisClient类类似的功能。
新类包含协议和 Redis 服务器功能中的所有增强功能。使用新类来:
- 使用所有 Redis 命令
- 连接到单一服务器
- 连接到启用了 Redis Sentinel 的高可用性服务器
- 连接到 Redis 的集群配置
- 在 Redis 扩展中执行请求
- 与 RESP2 和 RESP3 服务器协议服务器通信
8.7.1. 将现有 Redis 客户端应用程序迁移到新客户端 复制链接链接已复制到粘贴板!
您可以将现有应用程序直接迁移到新的 Redis 客户端,或者在两个步骤中使用帮助程序类 RedisAPI 来迁移应用程序。
在迁移应用程序前,您必须创建客户端。
8.7.1.1. 创建客户端 复制链接链接已复制到粘贴板!
以下示例演示了如何在 Eclipse Vert.x 3.x 版本中创建 Redis 客户端。
// Create the redis client (3.x) RedisClient client = RedisClient .create(vertx, new RedisOptions().setHost(host));
// Create the redis client (3.x)
RedisClient client = RedisClient
.create(vertx, new RedisOptions().setHost(host));
以下示例演示了如何在 Eclipse Vert.x 4 中创建 Redis 客户端。
// Create the redis client (4.x)
Redis client = Redis
.createClient(
vertx,
"redis://server.address:port");
// Create the redis client (4.x)
Redis client = Redis
.createClient(
vertx,
"redis://server.address:port");
在 Eclipse Vert.x 4 中,客户端使用以下标准连接字符串语法:
redis[s]://[[user]:password@]server[:port]/[database]
redis[s]://[[user]:password@]server[:port]/[database]
8.7.1.2. 将应用程序迁移到 RedisAPI 复制链接链接已复制到粘贴板!
使用"RedisAPI",您现在可以决定如何管理连接:
- 您可以让客户端管理使用池的连接。
或者
- 您可以通过请求新连接来控制连接。完成后,您必须确保关闭或返回连接。
您必须创建客户端,然后更新应用程序以处理请求。
以下示例演示了如何在 Eclipse Vert.x 3.x 版本中创建客户端后处理请求。
以下示例演示了如何在 Eclipse Vert.x 4 中创建客户端后处理请求。这个示例使用列表来设置键值对,而不是硬编码选项。有关该命令可用的参数的更多信息,请参阅 Redis SET 命令。
8.7.1.3. 将应用程序直接迁移到 Redis 客户端 复制链接链接已复制到粘贴板!
当您直接迁移到新的 Redis 客户端时:
- 您可以使用所有新的 Redis 命令。
- 您可以使用扩展。
- 您可以将一些从帮助程序类转换到新的客户端,从而改进应用程序的性能。
您必须创建客户端,然后更新应用程序以处理请求。
以下示例演示了如何在 Eclipse Vert.x 3.x 版本中创建客户端后设置和获取请求。
以下示例演示了如何在 Eclipse Vert.x 4 中创建客户端后处理请求。
在 Eclipse Vert.x 4 中,所有交互都使用 send (Request) 方法。
8.7.1.4. 迁移响应 复制链接链接已复制到粘贴板!
在 Eclipse Vert.x 3.x 中,用来硬编码所有已知的命令 till Redis 5 的客户端也根据 命令键入响应。
在新客户端中,命令不会硬编码。响应是 Response 类型。新的线路协议具有更多类型范围。
在较旧的客户端中,响应是以下类型:
-
null -
Long -
字符串 -
JsonArray -
JsonObject(适用于INFO和HMGET数组响应)
在新客户端中,响应是以下类型:
-
null -
响应
Response 对象具有类型转换器。例如,转换器,例如:
-
toString() -
toInteger() -
toBoolean() -
toBuffer()
如果收到的数据不是请求的类型,则类型转换器将其转换为最接近的数据类型。当无法转换到特定类型时,会引发 UnsupportedOperationException。例如,无法从 String 转换到 List 或 Map。
您还可以处理集合,因为 Response 对象实现了可 Iterable 接口。
以下示例演示了如何执行 MGET 请求。
8.7.2. Eclipse Vert.x Redis 客户端中的更新 复制链接链接已复制到粘贴板!
本节论述了 Redis 客户端中的更改。
8.7.2.1. 从 Redis 角色和节点选项中删除已弃用的术语 "slave" 复制链接链接已复制到粘贴板!
在 Redis 角色和节点选项中,已弃用的术语"slave"已被"replica"替代。
- 角色
-
以下示例显示了在 Eclipse Vert.x 3.x 版本中使用
SLAVE角色。
以下示例显示了在 Eclipse Vert.x 4 中使用 REPLICA 角色。
- 节点选项
-
以下示例显示了在 Eclipse Vert.x 3.x 版本中使用节点类型
RedisSlaves。
// Before (3.9) options.setUseSlaves(RedisSlaves);
// Before (3.9)
options.setUseSlaves(RedisSlaves);
以下示例显示了在 Eclipse Vert.x 4 中使用节点类型 RedisReplicas。
// After (4.x) options.setUseReplicas(RedisReplicas);
// After (4.x)
options.setUseReplicas(RedisReplicas);