以下是我的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>
现在我很困惑,不知道出了什么问题,任何帮助将不胜感激
错误非常冗长-您正在尝试对错误类型的键执行操作。
先运行MONITOR
,然后运行脚本-这样您就可以轻松发现错误。