Discard transactions if an exception occurs

RedisService.withTransaction can leave a connection in a transaction if an exception occurs during the execution of the closure. This will return the connection to the pool in that state and  cause an exception to get raised on any subsequent calls with the exception:

`JedisDataException: Cannot use Jedis when in Multi. Please use JedisTransaction instead.`