springboot实现redis的setnx
时间: 2023-07-20 08:11:32 浏览: 136
可以使用Spring Data Redis提供的RedisTemplate来实现redis的setnx。
示例代码如下:
```java
@Autowired
private RedisTemplate<String, String> redisTemplate;
public boolean setIfAbsent(String key, String value, long expireTime) {
Boolean result = redisTemplate.execute(
(RedisCallback<Boolean>) connection -> connection.set(
redisTemplate.getStringSerializer().serialize(key),
redisTemplate.getStringSerializer().serialize(value),
Expiration.seconds(expireTime),
RedisStringCommands.SetOption.SET_IF_ABSENT
)
);
return result != null && result;
}
```
其中,redisTemplate为通过Spring注入的RedisTemplate对象,key为redis中的键,value为redis中键对应的值,expireTime为键的过期时间(单位为秒)。
该方法使用了RedisCallback接口,通过该接口可以直接访问到RedisConnection,从而执行redis命令。在该方法中,我们使用了set命令的SET_IF_ABSENT选项,即只有当key不存在时才设置该键值对。该方法返回一个Boolean类型的结果,表示设置是否成功。
阅读全文