Jedis newbie problem when adding transactions to Redis client application:
Description of exception is absolutely correct though a little confusing. Problem is that you are trying to call methods on Redis connection object instead of Transaction object. So most probably you have something like:
But instead, you should have something like:
Cannot use Jedis when in Multi. Please use JedisTransaction instead.
redis.clients.jedis.exceptions.JedisDataException: Cannot use Jedis when in Multi. Please use JedisTransaction instead.
at redis.clients.jedis.BinaryJedis.checkIsInMulti(BinaryJedis.java:1651)
at redis.clients.jedis.Jedis.hmset(Jedis.java:724)
at test.TestService.updateSomething(TestService.groovy:39)
at test.TestService$_processBet_closure1.doCall(TestService.groovy:16)
at grails.plugin.redis.RedisService.withRedis(RedisService.groovy:67)
Description of exception is absolutely correct though a little confusing. Problem is that you are trying to call methods on Redis connection object instead of Transaction object. So most probably you have something like:
Jedis jedis = pool.getResource()
jedis.watch('foo')
...
def transaction = jedis.multi()
jedis.set("foo", value.toString())
def result = transaction.exec()
But instead, you should have something like:
Jedis jedis = pool.getResource()
jedis.watch('foo')
...
def transaction = jedis.multi()
transaction.set("foo", value.toString())
def result = transaction.exec()
you really solved my problem.......thanks so much..
ReplyDeleteI would be grateful to you if you can mail me some important tips regarding usage of jedis.
emailId: amit.singh2@comviva.com