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 


标签:Memcached
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号