go之Memcached Ping()在无效服务器上未返回错误
lovecherry
阅读:62
2025-06-02 22:19:02
评论:0
我使用内存缓存进行缓存,而我使用的客户端为https://github.com/bradfitz/gomemcache。当我尝试使用虚拟/无效服务器地址启动新客户端,然后对其进行ping操作时,它没有返回错误。
package main
import (
"fmt"
m "github.com/bradfitz/gomemcache"
)
func main() {
o := m.New("dummy_adress")
fmt.Println(o.Ping()) // return no error
}
我认为应该返回错误,因为服务器无效。我想念什么?
请您参考如下方法:
看来New()调用会忽略SetServers的返回值:
func New(server ...string) *Client {
ss := new(ServerList)
ss.SetServers(server...)
return NewFromSelector(ss)
}
SetServers()函数只会将服务器列表设置为有效服务器(在
您的情况:没有服务器),而
Ping()函数将仅ping
设置,并且由于没有设置服务器,因此它实际上什么也没做。
可以说这是一个功能。如果您有4台服务器,但其中一台发生故障,那么
并不是真正的问题。即使只有1个服务器,memcache通常也是可选的。
您可以使用错误检查来复制
New()逻辑:
ss := new(memcache.ServerList)
err := ss.SetServers("example.localhost:11211")
if err != nil {
panic(err)
}
c := memcache.NewFromSelector(ss)
err = c.Ping()
if err != nil {
panic(err)
}
这使:
panic: dial tcp 127.0.0.1:11211: connect: connection refused
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



