redis做缓存,怎么更新里面的数据

redis做缓存,先从redis读,读不到进数据库,再存入redis

1、那比如数据库更新了怎么操作。 数据库和redis各写一遍更新命令执行?
2、缓存数据要不要设置超时? 超时之后读不到,继续进数据库读,再存入?

阅读 42.3k
2 个回答

伪代码如下,思路也清晰。

  • 读写部分
if(redis){
    读取redis数据
}else{
    数据库读取,存redis+设置超时时间
}
  • 更新部分
if(数据库update){
    更新redis+设置超时时间
}
新手上路,请多包涵
if (updateDB){
    //B线程进来读取到的还是之前的缓存 出现缓存不一致
 deleteRedis;
 //这个时候缓存达到最终一致性
}
if (deleteRedis){
    //在这个操作的时候 B线程进来读到的是之前数据库的值,又写入缓存,出现缓存不一致
 updateDB;
    //这个时候休眠是为了保证在B线程进来请求到完成写入redis的时间内你可以在他之后删redis缓存达到最终一致性
 Thread.sleep(100);
 deleteRedis;
}

以上两种方法都尽可能达到最终一致性

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题