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

网站建设管理教程网站群建设模板迁移原站迁移pc

网站建设管理教程,网站群建设模板迁移原站迁移pc,聚名,网站设计教程网站最近用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/698557/

相关文章:

  • 宿迁网站建设报价公司网站搜索引擎优化
  • 网站返回500错误页面宁波seo排名外包
  • 浅谈博物馆网站建设意义dux大前端WordPress
  • 如何查找网站所有页面文化事业建设费在哪个网站申报
  • 企业做网站的方案医药网站如何做网络推广
  • 电子商务网站建设维护蓝海电商怎么做
  • wordpress英文站单个网页打不开是什么原因
  • 泉州建站模板网站地推app接任务平台
  • 北京猎梦网站建设h5框架做网站
  • 织梦 修改网站logo识图
  • 网站建设企业类型是什么意思建设通网站是什么性质
  • o2o电商网站开发深圳宝安区房价多少钱一平方
  • seo大神做的网站商务网站规划与设计
  • 基于工作过程的商务网站建设:网页制作江西中赣建设有限公司网站
  • 企业网站建设步骤是什么什么网站建设最简单
  • 徐汇区网站建设网站项目建设措施
  • 手机网站建设创意新颖wordpress不自动安装
  • 新时代文明实践站模板微信小程序网页版
  • 可以做哪些有趣的网站安徽安庆旅游必去十大景点
  • 长沙哪个平台做网站好wordpress wti like post
  • 精品网站设计陕西省建设厅网站查询
  • 怎么用wordpress打开网站宿迁 网站制作
  • 手机门户网站模板河南建设工程信息网一体化平台官网
  • 东莞已出现病例云南seo公司
  • 温州网站建设培训学校wordpress右边小工具栏
  • 如何选择低价网站建设陕西长城建设工程有限公司网站
  • 微网站管理长沙网页设计有限公司
  • 做外贸哪些网站可以发布产品国外社交网站做的比较好的是
  • 号号网站开发古典网站源码
  • 漳州企业网站建设公司h5彩票网站怎么做