防止重复下单等等操作皆可用
/**
* redis 缓存处理
*/
@Autowired
private StringRedisTemplate redisTemplate;
@Override
public boolean insertObjectLock(final Object obj, final String key, final long timeout) {
log.debug("insertObjectLock request:key={},obj={}", key, obj.toString());
try {
final String value = JSONObject.toJSONString(obj);
boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
@Override
public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
byte[] redisKey = redisTemplate.getStringSerializer().serialize(key);
byte[] redisValue = redisTemplate.getStringSerializer().serialize(value);
boolean flag = connection.setNX(redisKey, redisValue);
if (flag && timeout > 0) {
redisTemplate.expire(key, timeout, TimeUnit.MILLISECONDS);
}
return flag;
}
});
log.debug("insertObject response:{}", result);
return result;
} catch (Exception e) {
log.warn("redis error:{}", e);
}
return false;
}