最近想做一个优化,把经常get和update,但是又不太重要的数据,优先放到redis里面。然后每天定时把redis里有变化的数据update到数据库。从而减少存储服务的API调用。

目前我有3个leancache实例,其中2个用来存放数据。在第三个里面建立了2个hash表,用来记录前面2个leancache里面有变化的数据的KEY。当前面2个表数据有变化时候,第三个cache里面的对应hash表下对应的KEY值会累加1。

用于存放数据的2个leancache都是采用的allkeys-lru策略。

我现在每日定时对比第三个hash表里面需要update的key和前面2个数据表。然后再清除update-hash表。

目前发现问题:

首先前面2个leancache并没有装满的

每日定时的检测方法:


1.取出update-cache里面所有需要update的keys.
2.然后把keys传到数据存放的redis里面,查找对应的数据是否存在

但是在检测对比的时候

看了下2个存放数据的leancache里面的数据量,远远大于每日需要更新的数据量

依然会有数据对不上。想问一下可能是什么原因造成的?

建议记录更新的数据和原数据放在一个 LeanCache 实例,然后用 multi 来一起更新,这样可以保证两边同时更新成功。