@Override
public String set(final String key, final String value) {
return new JedisClusterCommand<String>(connectionHandler, maxAttempts) {
@Override
public String execute(Jedis connection) {
connection.watch(key);
int stock = Integer.parseInt(connection.get(key));
if (stock > 0) {
try {
Transaction t = connection.multi();
t.decr(key);
List<Object> results = t.exec();
return results != null && !results.isEmpty() ? "true" : "false";
} finally {
connection.unwatch();
}
}
return "false";
}
}.run(key);
}