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

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

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

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

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

查看代码,代码中如果是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模块正常启动。

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

posted on   EasyGBS  阅读(20)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示