Open wtysos11 opened 3 years ago
今天遇到了这个问题,搞了半个小时……
func TestHGet(t *testing.T){ t.Log("") element0,err := redisClient.HGet(redisCtx,keyName,"0").Int() if err != nil{ if err == redis.Nil{ //最终 t.Log("got redis nil") }else{ t.Error(err) } } t.Log("element value: ",element0) hgetNilValue := ` local user_key = KEYS[1] local pos1 = tonumber(ARGV[1]) local element = redis.call('hget',user_key,pos1) return type(element) ` // 结果为0, 拿到的元素确实不为"0" //result,err := redisClient.Eval(redisCtx,hgetNilValue,[]string{keyName},"0").Int() //if err != nil{ // t.Error(err) //}else{ // t.Logf("redis script return value is %v",result) //} result,err := redisClient.Eval(redisCtx,hgetNilValue,[]string{keyName},"0").Result() if err != nil{ t.Error(err) }else{ t.Log(result) } }
在Go中没有什么意外,拿到的是一个特殊的错误redis.Nil。但是在redis脚本内就很奇怪了,我直接返回拿到的类型是返回的是个redis: nil,一开始我以为是个字符串,搞了好久。 最终,我试了一下返回type(),结果是boolean,绝了。
redis.Nil
redis: nil
今天遇到了这个问题,搞了半个小时……
在Go中没有什么意外,拿到的是一个特殊的错误
redis.Nil
。但是在redis脚本内就很奇怪了,我直接返回拿到的类型是返回的是个redis: nil
,一开始我以为是个字符串,搞了好久。 最终,我试了一下返回type(),结果是boolean,绝了。