@ user_script:1:WRONGTYPE对持有错误类型值的键进行操作

问题描述 投票:0回答:1

以下是我的Lua脚本

if redis.call('sismember',KEYS[1],ARGV[1])==1
then redis.call('srem',KEYS[1],ARGV[1])
else return 0
end
store = tonumber(redis.call('hget',KEYS[2],'capacity'))
store = store + 1
redis.call('hset',KEYS[2],'capacity',store)
return 1

当我在Java中运行此srcipt时,出现类似的异常

@user_script:1: WRONGTYPE Operation against a key holding the wrong kind of value

抛出,Java代码就像

Object ojb = jedis.evalsha(sha,2,userName.getBytes(),
                id.getBytes(),id.getBytes()) ;

在我的代码中,用户名是“ tau”,id是“ 002”,然后按以下方式测试“ tau”和“ 002”的类型,

127.0.0.1:6379> type tau
set
127.0.0.1:6379> type 002
hash

确切地说,它们的内容是:

127.0.0.1:6379> hgetall 002
name
"鏁版嵁搴撲粠鍒犲簱鍒拌窇璺?
teacher
"taochq"
capacity
54
127.0.0.1:6379> smembers tau
002
004
001
127.0.0.1:6379>

现在我很困惑,不知道出了什么问题,任何帮助将不胜感激

java redis lua
1个回答
0
投票

错误非常冗长-您正在尝试对错误类型的键执行操作。

先运行MONITOR,然后运行脚本-这样您就可以轻松发现错误。

© www.soinside.com 2019 - 2024. All rights reserved.