go之尝试从Redis中的列表进行LPOP时类型错误的操作

shangdawei 阅读:39 2025-06-02 22:19:02 评论:0

我正在使用golang来处理redis,但是当我尝试从列表中对元素进行LPOP时,我一直收到错误消息。仅当我在列表中插入第一个元素时它才起作用,但是当我尝试添加第二个元素时,我不断收到以下错误:WRONGTYPE Operation against a key holding the wrong kind of value
我已经阅读了文档,但仍然出现此错误,请任何人指出我在做错的事情,因为我仍在调试。谢谢

testCases := []struct{ 
       name string 
       key  string 
       val  string 
    } { 
       { 
         name: "one", 
         key:  "color", 
         val: "red", 
       }, 
       { 
         name: "two" 
         key:  "color", 
         val: "blue", 
      }, 
      { 
         name: "three" 
         key:  "color", 
         val: "purple", 
      }, 
    } 
 
    for _, tc := range testCases { 
       t.Run(tc.name, func(t *testing.T){ 
          rc := redis.NewClient{} // params added 
          defer rc.Close() 
          err := rc.Send("RPUSH", tc.key, tc.val) 
          require.NoError(t, err) 
 
          err = rc.Flush() 
          require.NoError(t, err) 
 
          v, err = redis.String(rc.Do("LPOP", tc.key)) 
          require.NoError(t, err) 
          assert.Exact(t, tc.val, v) 
 
         _, err = rc.Do("SETEX", tc.key, 10, tc.val) 
         require.NoError(t, err) 
       }) 
    } 

请您参考如下方法:

RPUSH documentation says:

当key保留的值不是列表时,将返回错误。

在循环的第一次迭代结束时,应用程序使用SETEX命令将“颜色”设置为字符串值。

由于“颜色”不是列表,因此在第二次迭代开始时对“颜色”的RPUSH失败。


标签:Redis
声明

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

关注我们

一个IT知识分享的公众号