EasyGBS中Redis不启动的问题排查及优化

本文讲述了在EasyGBS项目中遇到的Redis 'isbusy'错误,通过排查发现本地Redis未启动,代码调整后解决了连接问题。同时介绍了EasyGBS的最新进展,包括视频调阅、登录鉴权、告警功能和语音对讲等,展望了AI整合进来的未来。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

之前我们介绍了在EasyGBS中,可以使用外部的Redis来进行数据的接入,本文我们讲的问题就跟Redis有关。在某个EasyGBS的项目现场,发现总是报“is busy”错误,所有设备都无法播放。

image.png

查看后台日志一直报错,定位到是无法连接到Redis。

image.png

查看用户的Redis配置,设置访问的是127.0.0.1

image.png

查看代码,代码中如果是localhost,才会自动启动本地的Redis ,因此出现Redis无法运行的问题。修改代码如下:

if (host == "localhost" || host == "127.0.0.1") && utils.Exist(EXE()) {
   if utils.IsPortInUse(port) {
      err = fmt.Errorf("Port[%d] In Use", port)
      return
   }
   args := []string{"--port", strconv.Itoa(port)}
   if auth != "" {
      args = append(args, "--requirepass", auth)
   }
   cmd = exec.Command(EXE(), args...)
   cmd.Dir = filepath.Dir(EXE())
   err = cmd.Start()
   if err != nil {
      return
   }
   pidPath := filepath.Join(filepath.Dir(EXE()), "redis.pid")
   ioutil.WriteFile(pidPath, []byte(strconv.Itoa(cmd.Process.Pid)), 0644)
}

添加如果是127.0.0.1的程序也启动程序,修改完成后,Redis模块正常启动。

image.png

EasyGBS更新新版以来,我们做了不少功能上的改进,比如视频调阅、登录鉴权等,同时也增加了很多新功能,比如告警功能、语音对讲等,我们也在不断升级,在未来会将AI智能分析与EasyGBS相结合,欢迎大家了解及测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值