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



