首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Redislabs运行时生产错误-无效内存地址或零指针取消引用

Google Redislabs运行时生产错误-无效内存地址或零指针取消引用
EN

Stack Overflow用户
提问于 2015-04-24 11:51:42
回答 1查看 157关注 0票数 0

我在运行时使用Redis服务(来自Redis实验室),当我尝试获取一个不存在的键时,我会得到上面提到的错误。该代码在本地测试服务器上运行良好,但在生产中却很恐慌。

代码语言:javascript
复制
 c, err := redis.Dial("tcp", "pub-redis-myredis:<myport>")
_, err = c.Do("AUTH", "password") 
value, err := c.Do("GET", "foo4")

if value == nil {
    log.Infof(contextOfAppEngineWhereServerIsRunning, "value not found in redislabs")

} 

日志显示恐慌出现在行_, err = c.Do("AUTH", "password")中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-24 13:10:53

在AppEngine上,您的应用程序(webapp)运行在沙箱环境中,您不能为套接字使用标准的net包(我假设redislab使用这个包)。

您必须将appengine/socket包用于出站网络套接字。

它很可能在本地工作,因为限制只适用于生产环境。

始终检查返回的error值。当前,在您发布的代码中,您不检查任何代码。如果您已经检查了它,您将从错误中看到原因。

您得到invalid memory address or nil pointer dereference错误,因为您的第一次调用失败:

代码语言:javascript
复制
c, err := redis.Dial("tcp", "pub-redis-myredis:<myport>")

err是一个非nil值,cnil,这意味着您不能调用它的Do()方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29846815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档