2

我正在尝试使用 Go 连接到我的 RediSearch(Redis 模块)实例。

梳理生成客户端的文档和 Go 代码,我看不到如何将身份验证选项传递给 Redigo 客户端......这是我的疏忽还是我们只是希望在不保护数据库的情况下使用 RediSearch?

在生成 RediSearch 客户端时,我还尝试了以下操作。每个都给出有关 URL 格式的错误:

redisearch.NewClient("mypasswordhere@10.10.10.50:6379", index)
redisearch.NewClient("redis://mypasswordhere@10.10.10.50:6379", index)

在返回客户端pool.goNewSingleHostPool函数中,它似乎应该传递DialOptionsDialRedigo 函数而不是nil,并将这些选项传递给 RediSearchNewClient函数......

4

2 回答 2

2

一个很好的方法是这样的,使用 redigo 的内置密码验证结构:

func newPool(server string, password string) *redis.Pool {
    return &redis.Pool{
        MaxIdle:     3,
        IdleTimeout: 240 * time.Second,
        Dial: func() (redis.Conn, error) {
            return redis.Dial("tcp",
                server,
                redis.DialPassword(password))
        },

        TestOnBorrow: func(c redis.Conn, t time.Time) error {
            _, err := c.Do("PING")
            return err
        },
    }
}

server应该看起来像这样:redis-1344.333.us-east-1-mz.ec2.com:17885并且密码是纯文本。

于 2021-05-12T12:17:29.607 回答
2

使用您选择的池拨号功能调用NewClientWithPool

p := &redis.Pool{
    Dial: func() (*Conn, error) { 
       return redis.DialURL("redis://mypasswordhere@10.10.10.50:6379") 
    },
    MaxIdle: 3,                     // adjust to taste 
    IdleTimeout: 240 * time.Second, // adjust to taste

}
c := redissearch.NewClientFromPool(p, index)
于 2020-05-08T03:55:54.030 回答