有一个数据图表页面需要访问四个接口,这四个接口都用到同一个SQL查询得到结果(结果都是一样的),现在的问题是怎么避免重复查询,是单独提供一个接口进行查询然后把参数带到这四个接口里面还是考虑用缓存?如果用缓存,个人想法是缓存数据设置为10分钟方便这一次查询就行(目前项目有Guava ,redis,无法引入caffine)
1条回答 默认 最新
- 猿来如此yyy 2024-07-31 09:37关注
你可以考虑使用缓存来避免重复查询。根据你的描述,可以将查询结果缓存起来,设置缓存过期时间为10分钟。这样,每次访问数据图表页面时,先从缓存中查询是否有缓存数据,如果存在,则直接返回缓存结果,不需要再进行SQL查询;如果缓存过期或没有缓存数据,则进行SQL查询,并将查询结果放入缓存中。
由于你的项目无法引入Caffeine,你可以选择使用Guava或Redis来实现缓存。以下是两种方案的简要介绍:
使用Guava缓存:
- 在应用程序的某个合适的位置初始化一个Guava缓存对象。
- 在进行查询时,先从Guava缓存中尝试获取结果。
- 如果缓存中存在结果,则直接返回结果;否则进行SQL查询,并将结果放入Guava缓存中,同时设置10分钟的过期时间。
使用Redis缓存:
- 在应用程序中,使用Redis作为缓存服务器。
- 在进行查询时,先从Redis缓存中尝试获取结果。
- 如果缓存中存在结果,则直接返回结果;否则进行SQL查询,并将结果放入Redis缓存中,同时设置10分钟的过期时间。
无论你选择使用Guava还是Redis,都需要注意以下几点:
- 在应用程序中,确保只有一个地方进行SQL查询,并将结果放入缓存中。
- 注意缓存的命名规范,确保每个接口都使用相同的缓存键。
- 设置适当的缓存过期时间,确保数据在10分钟内有效。
这样,通过使用缓存,可以避免重复查询,并提高数据图表页面的访问性能。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
- ¥20 关于web前端如何播放二次加密m3u8视频的问题
- ¥20 spring boot集成mqtt的使用问题
- ¥15 使用百度地图api 位置函数报错?
- ¥15 metamask如何添加TRON自定义网络
- ¥66 关于川崎机器人调速问题
- ¥15 winFrom界面无法打开
- ¥30 crossover21 ARM64版本安装软件问题
- ¥15 mymetaobjecthandler没有进入
- ¥15 mmo能不能做客户端怪物