热点数据怎么筛选?
如题,存在这样一个场景,上游系统和我们系统之间存在通知+定时轮询的机制去同步某个账户的流水。其中定时轮询的批量高频率执行,因为里面大部分账户做同步的时候都是没有任何数据的,上游系统就骂人了,由此打算从中抽取一些热点数据做同步。
现在的想法是在得到通知的时候维持一个redis缓存,定时轮询时看缓存中是否存在数据,存在才同步否则不同步,然后再做一个慢一点的全量同步定时。具体实现是在redis中维持一个没有过期时间的zset或者set,同时往这个set添加带过期时间的账户,将redis的内存淘汰策略设置为带ttl的lru。
现在的问题是,由于账户数量较大,单纯设置一个set肯定会存在bigkey问题,而且不清楚内存淘汰策略会达到怎么样的一个效果,如果缓存的账户数量很多,那么和全查区别不大。
所以请教一下,请各位不吝赐教
你作为下游,其实要关注的是:
因此只要上游提供一个接口,提供指定时间点之后的变动账户列表,说白了就是根据 update_time 查询,然后返回满足条件的账户 ID 列表给你。你就只需要按照列表中的账户同步即可,这样就避免了无效查询。