bean++ 2024-07-31 09:15 采纳率: 40%
浏览 24

Java 使用缓存避免重复查询

有一个数据图表页面需要访问四个接口,这四个接口都用到同一个SQL查询得到结果(结果都是一样的),现在的问题是怎么避免重复查询,是单独提供一个接口进行查询然后把参数带到这四个接口里面还是考虑用缓存?如果用缓存,个人想法是缓存数据设置为10分钟方便这一次查询就行(目前项目有Guava ,redis,无法引入caffine)

  • 写回答

1条回答 默认 最新

  • 猿来如此yyy 2024-07-31 09:37
    关注

    你可以考虑使用缓存来避免重复查询。根据你的描述,可以将查询结果缓存起来,设置缓存过期时间为10分钟。这样,每次访问数据图表页面时,先从缓存中查询是否有缓存数据,如果存在,则直接返回缓存结果,不需要再进行SQL查询;如果缓存过期或没有缓存数据,则进行SQL查询,并将查询结果放入缓存中。

    由于你的项目无法引入Caffeine,你可以选择使用Guava或Redis来实现缓存。以下是两种方案的简要介绍:

    1. 使用Guava缓存:

      • 在应用程序的某个合适的位置初始化一个Guava缓存对象。
      • 在进行查询时,先从Guava缓存中尝试获取结果。
      • 如果缓存中存在结果,则直接返回结果;否则进行SQL查询,并将结果放入Guava缓存中,同时设置10分钟的过期时间。
    2. 使用Redis缓存:

      • 在应用程序中,使用Redis作为缓存服务器。
      • 在进行查询时,先从Redis缓存中尝试获取结果。
      • 如果缓存中存在结果,则直接返回结果;否则进行SQL查询,并将结果放入Redis缓存中,同时设置10分钟的过期时间。

    无论你选择使用Guava还是Redis,都需要注意以下几点:

    • 在应用程序中,确保只有一个地方进行SQL查询,并将结果放入缓存中。
    • 注意缓存的命名规范,确保每个接口都使用相同的缓存键。
    • 设置适当的缓存过期时间,确保数据在10分钟内有效。

    这样,通过使用缓存,可以避免重复查询,并提高数据图表页面的访问性能。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月31日