为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 redisearch-go (Golang) 中为 redigo 客户端提供密码

如何在 redisearch-go (Golang) 中为 redigo 客户端提供密码

Go
catspeake 2022-06-01 16:50:58
我正在尝试使用 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.go的NewSingleHostPool函数中,它似乎应该传递DialOptions给DialRedigo 函数而不是nil,并将这些选项传递给 RediSearchNewClient函数......
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

使用您选择的池拨号功能调用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)


查看完整回答
反对 回复 2022-06-01
?
慕婉清6462132

TA贡献1804条经验 获得超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并且密码是纯文本。


查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信