在java中,有很多场景是需要用到redis,来做到一个“锁”的效果。所以需要先get判空,在进行set的操作,所以将两步结合在一起,能避免很多其他因素带来的问题。
Object token = redisTemplate.opsForValue().get(key);
if (ObjectUtils.isNotEmpty(token)){
"有这个key的数据的后续操作"
}else {
redisTemplate.opsForValue().set(key,value,3, TimeUnit.SECONDS);
"没有这个key的数据的后续操作"
}
在这个时候分为了两个步骤
redisTemplate.opsForValue().setIfAbsent()
if(redisTemplate.opsForValue().setIfAbsent("key","value",100,TimeUnit.SECONDS)){
"具体的业务操作"
}else{
"有这个key的其它操作"
}
这个方法返回的值是Boolean类型的值,可以直接运用到一些判断中(当redis中没有后面携带的key这个数据时,返回的是true,且将这个key,value新增到redis中,后面两个参数是设置key的过期时间,可填可不填。反之则返回false,且不会有其他操作)