当前位置: 首页 > news >正文

微网站开发北京江西赣州简介

微网站开发北京,江西赣州简介,网站建设中 下载,天津做车抵的公司最近用redis shake做redis数据迁移,由于redis提供的客户端没有用于查看集群的工具,且我部署的redis集群是基于k8s来构建的,没有使用ingress做转发,所以只能在k8s内部访问集群,于是我先用gogin框架编写了访问redis集群的…

最近用redis shake做redis数据迁移,由于redis提供的客户端没有用于查看集群的工具,且我部署的redis集群是基于k8s来构建的,没有使用ingress做转发,所以只能在k8s内部访问集群,于是我先用go+gin框架编写了访问redis集群的代码,然后打成镜像,再部署到k8s中,创建一个svc类型为NodePort方便外部访问。

环境搭建完毕后,访问接口,发现连接redis集群失败,报错:

dial tcp: lookup redis-cluster-v2-0.redis-cluster-v2.redis: i/o timeout

我尝试在容器内部ping | telnet redis集群某一结点地址,发现网络是可通的,后面在代码中新增net.dail()去连接redis集群,报另一个错误:

 got 4 elements in cluster info address, expected 2 or 3

百度发现使用的go redis版本与redis的版本不一致造成的,

  • Redis 6.0及以下版本:选择Go-redis v8.0及以下版本。

  • Redis 7.0及以上版本:选择Go-redis v9.0及以上版本。

由于我部署的redis集群是7.0,但go redis使用的版本是 v8["github.com/go-redis/redis/v8"],于是修改go redis版本:

   "github.com/redis/go-redis/v9"

重新部署一遍就可以了,

go redis cluster 代码:

package clientimport ("context""github.com/BurntSushi/toml""github.com/redis/go-redis/v9""net""redis-cluster-web/log"
)type RedisClient struct {*redis.Client*redis.ClusterClient
}type Conf struct {RedisConf `toml:"redis"`
}type RedisConf struct {Addrs    []string `toml:"addrs"`Addr     string   `json:"addr"`Database int      `toml:"database"`Password string   `toml:"password"`
}var RC RedisClientfunc init() {RC.NewRedisClient()RC.NewRedisClusterClient()
}func (r *RedisClient) NewRedisClient() {conf := Conf{}_, err := toml.DecodeFile("redis.toml", &conf)if err != nil {log.Error.Println("read redis conf err:", err)return}redisAddr := conf.Addrr.Client = redis.NewClient(&redis.Options{Addr:     redisAddr,Password: conf.Password,})
}
// 我把redis配置写在.toml的配置文件中
func (r *RedisClient) NewRedisClusterClient() {conf := Conf{}_, err := toml.DecodeFile("redis.toml", &conf)if err != nil {log.Error.Println("read redis conf err:", err)return}r.ClusterClient = redis.NewClusterClient(&redis.ClusterOptions{Addrs: conf.Addrs,})// 打印集群信息info := r.ClusterClient.ClusterInfo(context.Background())// 打印集群节点信息 nodes := r.ClusterClient.ClusterNodes(context.Background())log.Info.Println(info)log.Info.Println(nodes)// dial redis节点for _, addr := range conf.Addrs {_, err = net.Dial("tcp", addr)if err != nil {log.Error.Println(err)} else {log.Info.Println("dail ", addr, " success")}}
}

http://www.yayakq.cn/news/941811/

相关文章:

  • 长春站是火车站还是高铁站惠州宣传片制作公司
  • 会泽做网站企业网站设计解决方案
  • 投资网站策划wordpress小工具最近评论
  • 手机在线编程网站湛江免费建站公司
  • 用dw做旅游的网站的设计网站内页修改关键字
  • 网站建设是由什么组成的个人博客html
  • 做兼职工作上哪个网站招聘网站模版建设
  • 汽车4s店网站建设策划统计局宣传工作总结 网站建设
  • 韩国购物网站模板公司平台
  • 全球搜索引擎网站园区网站建设方案
  • 广东高端网站设计公司ps网页设计说明书
  • 去空格网站网站设计特别好的公司
  • 厦门做企业网站多少钱外贸功能网站建设
  • 小学最好的网站建设管理软件有哪几种
  • 网站建设找美橙互联纬天建筑工程信息资讯网
  • 四川省建设网站电子签章wordpress白屏问题
  • 手机网站模板大全WordPress微信域名防封源码
  • 邵阳做网站的公司万网官网4399
  • 搜索网站的浏览器包头企业做网站
  • 优秀购物网站房产资讯什么网站做的好
  • 外贸网站的作用做一钓鱼网站
  • 旅游网站只做陕西省建设网
  • 房产网站开发公司为企业制定网络营销方案
  • 我国空间站建造临猗商城网站建设平台
  • 保定网站制作网页如何评价企业网站推广效果?
  • 公司网站建设工作通知苏州制作手机网站
  • 云网站7china网站建设要钱吗
  • 网站域名过期怎么办可信网站证书
  • 哈尔滨企业建站服务商网站为何不显示百度商桥对话框
  • 北京网站制作长沙wordpress android api