使用redisTemplate设置过期时间是不是不能保证原子性?
竹蜻蜓dd 2019-10-27 07:31:55 示例:
使用set数据结构,往redis存值,
redisTemplate.opsForSet().add(key, values);
如果我还想设置过期时间,那就要这么写:
/**
* 往set中存值,并设置过期时间
*
* @param key 键
* @param time 过期时间
* @param values 值
* @return 成功的个数
*/
public long sSetAndTime(String key, long time, Object... values) {
try {
Long count = redisTemplate.opsForSet().add(key, values);
if (time > 0) {
expire(key, time);
}
return count;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
问题来了:
如果我第一步存值成功之后,设置过期时间之前,出现某异常啥的,导致过期时间没有设置成功。。。大家懂我的意思了吧?
这样是不是不保证原子性了?
【ps:本人redis基础不好,如果问题中不严谨,也希望大家指出来,顺便给出答案,谢谢了。】