猿问

更新内存中的数据

有15张数据库表load进内存中,大概需要内存10G(数据量比较大),随时有request访问内存中的这些数据(平均每分钟2次),然后每10分钟需要把这15张表的内容从数据库中update到内存中一下,问题就来了:如果在update的过程中有request,拿到的数据可能是update了一半的数据,表和表之间是有关系的,这样的数据不能使用。我该怎么解决这个问题?请大神说出您详细的思路,谢谢!

白板的微信
浏览 558回答 2
2回答

子衿沉夜

缓存是要有粒度划分的,你这样将整个库作为缓存单位,这个问题就没法解决。以记录为单位缓存,或者以需要的逻辑将若干条记录作为一个单位进行缓存。

蝴蝶刀刀

每10分钟需要把这15张表的内容从数据库中update到内存中这个是为了同步数据?update的过程中有request,只能让request等待 update 操作完成。数据量这么大的话,除了第一次写入内存比较多之外,其他的时候没必要重新写入相同的数据。你可以写个触发器之类的,数据变更之后,自动的更新内存中的数据,如果每一次都全部重写,肯定很慢而且没必要这么做。
随时随地看视频慕课网APP
我要回答