@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* 简单锁 10s
*/
@SuppressWarnings("ConstantConditions")
private boolean sampleLock(String lockName){
return redisTemplate.execute((RedisCallback<Boolean>) redisConnection -> {
Object obj = redisConnection.execute("set",
getBytes("DS_REAL_FEE_LOCK_" + lockName),
getBytes("lockIt"),
getBytes("NX"),
getBytes("EX"),
getBytes("10"));
return obj != null;
});
}
private byte[] getBytes(String obj){
return obj.getBytes(StandardCharsets.UTF_8);
}
当spring boot集成redis但是又未引入jedis时,简单锁写法如上
当spring boot集成redis同时又引入了jedis时,简单锁写法如下
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* 简单锁 10s
*/
@SuppressWarnings("ConstantConditions")
private boolean sampleLock(String lockName){
return redisTemplate.execute((RedisCallback<Boolean>) redisConnection -> {
RedisSerializer valueSerializer = redisTemplate.getValueSerializer();
RedisSerializer keySerializer = redisTemplate.getKeySerializer();
Object obj = connection.execute("set",
keySerializer.serialize(key),
valueSerializer.serialize(value),
SafeEncoder.encode("NX"),
SafeEncoder.encode("EX"),
Protocol.toByteArray(exptime));
return obj != null;
});
}
private byte[] getBytes(String obj){
return obj.getBytes(StandardCharsets.UTF_8);
}
来源:oschina
链接:https://my.oschina.net/ysma1987/blog/3168224