解决问题:当redis服务端断开的时候`进程会崩溃(转载6哥笔记)
2024-09-01 05:06:35
package main import (
"fmt"
"github.com/astaxie/beego/logs"
"github.com/garyburd/redigo/redis"
"ha666/initial"
_ "ha666/initial"
"strconv"
"time"
) func main() {
defer func() {
if err := recover(); err != nil {
logs.Error("【main】ex:%v", err)
time.Sleep(time.Second)
}
}()
logs.Info("开始")
rc := initial.RedisClient.Get()
defer rc.Close()
for {
bytesresult, err := redis.ByteSlices(rc.Do("TIME"))
if err != nil {
fmt.Println(err.Error())
return
}
for _, v := range bytesresult {
_, err = strconv.ParseInt(string(v), , )
if err != nil {
fmt.Println(err.Error())
return
}
//fmt.Println(il)
}
time.Sleep( * time.Millisecond)
}
}
上面犯了两个错误:
1、defer使用错误
2、redis客户端从pool取出来以后要判断错误
修正后的代码是这样的:
package main import (
"fmt"
"github.com/astaxie/beego/logs"
"github.com/garyburd/redigo/redis"
"github.com/pkg/errors"
"ha666/initial"
_ "ha666/initial"
"strconv"
"time"
) func main() {
for {
bytesresult, err := get_redis()
if err != nil {
fmt.Println(err.Error())
continue
}
for _, v := range bytesresult {
il, err := strconv.ParseInt(string(v), , )
if err != nil {
fmt.Println(err.Error())
continue
}
fmt.Println(il)
}
time.Sleep( * time.Millisecond)
}
} func get_redis() ([][]byte, error) {
rc := initial.RedisClient.Get()
if rc.Err() != nil {
return nil, rc.Err()
}
defer rc.Close()
bytesresult, err := redis.ByteSlices(rc.Do("TIME"))
return bytesresult, err
}
最新文章
- Css3新特性应用之视觉效果
- Hibernate一对多关联
- winform把图片存储到数据库
- selenium IDE--录制和回放脚本
- ubuntu 点点滴滴
- LATEX学习笔记1
- JAVA Layout
- TMemoryStream、String与OleVariant互转
- iOS 加载本地的html文件
- python学习之路-书籍推荐
- Ionic1开发环境配置ji
- gitlab 权限说明
- [Day18]集合框架Collection、迭代器、增强for循环以及泛型
- ASP.NET项目答辩系统课件使用中的问题记录
- clone内容包含select2
- scrapy的一些容易忽视的点(模拟登陆,传递item等)
- Kali 局域网 DNS 劫持
- BZOJ 3172 Tjoi2013 单词 后缀数组
- Linux命令-文件搜索命令:grep
- webapi返回不带引号的字符串,解决自动加双引号的问题