如何解决如何根据Lettuce-Standalone、RedisCluster和Sentinel中的配置选择多个Redis连接?
要求是为什么我们不能有像 Connection 这样的通用连接对象,而不是有 StatefulRedisConnection 和 StatefulRedisClusterConnection ?
为什么我们有 RedisClient 和 RedisClusterClient 而不是可以连接到任何类型的连接(如 Standalone、Sentinel 和 Cluster)的通用 Client 对象?
当我在命令行参数中说connectionType=cluster(或)connectionType=sentinel时,如何通过切换Standalone、cluster或sentinel来实现工厂模式?
RedisClient client = RedisClient.create(redisURI);
AbstractRedisClient abstractRedisClient = RedisClient.create(redisURI);
abstractRedisClient = RedisClusterClient.create(redisURI);
AbstractRedisClient finalAbstractRedisClient = abstractRedisClient;
GenericObjectPool<StatefulRedisConnection<String,String>> pool = ConnectionPoolSupport
.createGenericObjectPool(() -> (finalAbstractRedisClient instanceof RedisClient) ? ((RedisClient) finalAbstractRedisClient).connect() : ((RedisClusterClient) finalAbstractRedisClient).connect(),new GenericObjectPoolConfig());
try (StatefulRedisConnection<String,String> connection = pool.borrowObject()) {
RedisCommands<String,String> commands = connection.sync();
pong = commands.ping();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。