说明我的需求:实现一个用户操作次数的计数器,没有数据时先从数据库查询,有并发的情况。
代码如下:
value是从数据库查询的,问题是:这样岂不是每次都查询数据库了?如何做到key不存在就查询数据库,存在了就不用查询数据库了?
if (redisConnection.setNX(key, value) == 1) {
return value;
} else {
return redisConnection.incr(key);
}
下面的代码在并发情况下还是会多次查询数据库的
if (redisConnection.exists(key)) {
redisConnection.incr(key);
} else {
if (redisConnection.setNX(key, value) == 1) {//并发的情况下这里还是会执行多次
return value;
} else {
return redisConnection.incr(key);
}
}
自己琢磨的一个方法,让key和exists过期时间保持一致就行,不知道还有没有更好的方法