gpt4 book ai didi

关于 Heroku 问题的 Scala-redis 客户端连接到 RedisCloud

转载 作者:IT王子 更新时间:2023-10-29 06:11:50 28 4
gpt4 key购买 nike

我正在使用新的非阻塞 redis 客户端 https://github.com/debasishg/scala-redis连接到 Heroku 上的 Rediscloud DB。所需的连接字符串是例如以下格式。

redis://rediscloud:@pub-redis-.us-east-1-3.4.ec2.garantiadata.com:

请注意,它在连接字符串中包含一个密码字符串。

我的问题是如何根据代码文档使用 RedisClient 对象提供具有这样签名的密码?

对象 RedisClient {

def apply(host: String, port: Int = 6379, name: String = defaultName,
settings: RedisClientSettings = RedisClientSettings())(

隐式 refFactory:ActorRefFactory): RedisClient ....

……

……

最佳答案

看Redis的文档,其实没有用户名的概念。 AUTH command只需要一个密码。

Scala-redis 使用提供的 secret 参数给 do the authentication使用 AUTH

Heroku example for Redis Cloud ,他们提供了如何使用 JedisPool(Java Redis 库)进行连接的示例。他们可以更好地提及它,但在文档中没有任何地方他们实际使用了 Redis URL 中的用户名。

在 Java 示例中,他们只是拆分用户信息组件 user:password 并仅提取冒号后的第二部分:password。用户名从未使用过。

回到你关于Scala-redis的问题,你想要的构造函数是:

RedisClient(override val host: String, override val port: Int,
override val database: Int = 0, override val secret: Option[Any] = None, override val timeout : Int = 0)

secret 是您的 Redis URL 的密码部分。

我最终在自己的应用程序中使用了以下内容:

val redisClient = Properties.envOrNone("REDISCLOUD_URL") match {
case Some(redisUrl) => {
val redisUri = new URI(redisUrl)
val host = redisUri.getHost()
val port = redisUri.getPort()
val secret = Try(redisUri.getUserInfo().split(":",2).last).toOption
new RedisClient(host, port, secret = secret)
}
case _ => {
// Deal with missing configuration here
}
}

关于关于 Heroku 问题的 Scala-redis 客户端连接到 RedisCloud,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24524063/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com