redis做缓存,先从redis读,读不到进数据库,再存入redis
1、那比如数据库更新了怎么操作。 数据库和redis各写一遍更新命令执行?
2、缓存数据要不要设置超时? 超时之后读不到,继续进数据库读,再存入?
redis做缓存,先从redis读,读不到进数据库,再存入redis
1、那比如数据库更新了怎么操作。 数据库和redis各写一遍更新命令执行?
2、缓存数据要不要设置超时? 超时之后读不到,继续进数据库读,再存入?
if (updateDB){
//B线程进来读取到的还是之前的缓存 出现缓存不一致
deleteRedis;
//这个时候缓存达到最终一致性
}
if (deleteRedis){
//在这个操作的时候 B线程进来读到的是之前数据库的值,又写入缓存,出现缓存不一致
updateDB;
//这个时候休眠是为了保证在B线程进来请求到完成写入redis的时间内你可以在他之后删redis缓存达到最终一致性
Thread.sleep(100);
deleteRedis;
}
以上两种方法都尽可能达到最终一致性
2 回答3.2k 阅读
1 回答1.9k 阅读✓ 已解决
2 回答1.3k 阅读
1 回答1.6k 阅读
1 回答1.4k 阅读
1 回答675 阅读
820 阅读
伪代码如下,思路也清晰。