当前位置: 首页 > 知识库问答 >
问题:

java - 热点数据筛选优化策略?

周辰沛
2024-03-14

热点数据怎么筛选?

如题,存在这样一个场景,上游系统和我们系统之间存在通知+定时轮询的机制去同步某个账户的流水。其中定时轮询的批量高频率执行,因为里面大部分账户做同步的时候都是没有任何数据的,上游系统就骂人了,由此打算从中抽取一些热点数据做同步。

现在的想法是在得到通知的时候维持一个redis缓存,定时轮询时看缓存中是否存在数据,存在才同步否则不同步,然后再做一个慢一点的全量同步定时。具体实现是在redis中维持一个没有过期时间的zset或者set,同时往这个set添加带过期时间的账户,将redis的内存淘汰策略设置为带ttl的lru。

现在的问题是,由于账户数量较大,单纯设置一个set肯定会存在bigkey问题,而且不清楚内存淘汰策略会达到怎么样的一个效果,如果缓存的账户数量很多,那么和全查区别不大。

所以请教一下,请各位不吝赐教

共有1个答案

邢飞雨
2024-03-14

你作为下游,其实要关注的是:

自从上次同步后,哪些账户出现了变动?

因此只要上游提供一个接口,提供指定时间点之后的变动账户列表,说白了就是根据 update_time 查询,然后返回满足条件的账户 ID 列表给你。你就只需要按照列表中的账户同步即可,这样就避免了无效查询。

 类似资料:
  • 问题内容: 在有关Hotspot中的JIT的讲座中,我想提供尽可能多的JIT执行的特定优化示例。 我只知道“方法内联”,但是应该更多。为每个示例投票。 问题答案: 好吧,您应该阅读Brian Goetz的文章以获取示例。 简而言之,HotSpot可以并且将: 内联方法 连接同一对象上的相邻块 如果无法从其他线程访问监视器,则消除锁定 消除无效代码(因此大多数微基准都是毫无意义的) 对非变量的直接存

  • 我正在Java中研究一种创建布尔数组isPrime的方法: 其中质数用“真”标记,其余的用“假”标记。< br >同时,我还想数一数找到的素数: 基本思想是使用埃拉托斯特尼筛。到目前为止,我的方法看起来像这样: 所以我的问题是 因为筛子多次将一些非质数的值设置为“false”(例如45 bcs 3*15=45和9*5=45),所以不起作用 那么,有人知道我如何重写这个程序,以便只将所有非质数设置为

  • 我正在使用以下设置: 我的记录大小大约是2000字节。并查看“Grid-Data-Loader-Flusher”线程状态,如下所示: 线程数平均最长持续时间网格-数据-加载器-冲洗器-#100 38 4,737,793.579 30,427,862 180,036,156 数据流的最佳配置是什么? 谢谢

  • 选择数据表格头部 图标,可以选择表格内字段进行复杂条件筛选; 筛选结果在表格内显示; 选择: 选择图层内字段名称 约束条件: 对选择的该字段指定条件,条件一般有等于、小于、大于等(数值型字段)、或者包含、不包含等(文本型字段)... 约束值:输入需要限制的值 可以支持多种条件同时筛选、或者任选其一条件满足;

  • 本文向大家介绍MySQL数据库查询性能优化策略,包括了MySQL数据库查询性能优化策略的使用技巧和注意事项,需要的朋友参考一下 优化查询 使用Explain语句分析查询语句 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。 通过对查询语句的分析,可以了解查询语句的执行情况,找出查询语句执行的瓶颈,从而优化查询语句. 使用索引查询 MySq

  • 这一组数据在进行groupby前已经完成筛选,但进行groupby聚合后的结果显示是利用未筛选的数据进行的聚合,就像下面的结果,在groupby前已经完成点击量非0过滤,但最后仍存在含0的资源,询问chatGPT给的方案是可能用索引前的数据进行的聚合,重置索引后仍无法解决,请教大牛是否遇到过类似的问题,虽然可以在聚合后重新进行filter过滤,但这个问题搞得很焦灼 代码源文本