gpt4 book ai didi

java - Web 服务架构 : Redis (as cache) & PostgreSQL for persistence

转载 作者:IT王子 更新时间:2023-10-29 06:00:52 25 4
gpt4 key购买 nike

我正在开发一个 Java REST API,它使用来自 postgreSQL 数据库的客户端数据。

数字:.一开始约有600个客户.他们中的一些人每隔几秒就做一次请求

因为客户按请求付费,我们需要控制他们成功请求的数量是否达到了他们的限制,并且在每次请求性能不好之后查询 postgresql 数据(更新'hitsCounter'字段的值),我们是考虑用redis实现一个缓存系统。

想法:客户端发出第一个请求后,我们从 postgresql 检索他的数据并将其存储到 redis 缓存中。然后使用此缓存数据,例如递增“hitsCounter”键值,直到客户端停止执行请求。同时,后台进程每隔几分钟将数据从 redis 缓存保存到 db 表,所以最后我们将更新的数据返回到 postgresql,我们可以在将来处理它们。

我认为它明显提高了性能,但我不确定这个“后台进程”。一个选项是检查缓存元素的 TTL,如果它小于某个值(这意味着客户端已完成请求),则保留数据。

我很想听听对此的一些意见。这是一个好主意吗?你知道一些更好的选择吗?

最佳答案

非常合理的想法,但您没有提到您所做的任何测量。您的目标硬件在您的目标事务级别上的瓶颈是什么?不知道这一点,就不能说。

也许您可以使用未记录的表。只需在每个查询中插入一行,然后每 5 分钟汇总一次,清除旧数据。再一次,使用热更新,假设 75% 的填充因子可能更新更有效。我不知道(你也不知道)我们还没有测量过它。

还不够吗?将其粘贴在 ssd 上自己的表空间上。

还不够吗?将其粘贴在自己的虚拟机/机器上。

还不够吗?只需将这些该死的东西写入每个前端盒上的平面文件,然后每分钟将数据批处理一次存入数据库。

此外 - 他们为每次查询支付多少费用?如果电源出现故障并且您丢失了五秒钟的查询日志,您会在乎吗?您是否需要能够为每个查询生成包含原始详细信息和时间戳的收据?

关于java - Web 服务架构 : Redis (as cache) & PostgreSQL for persistence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16234221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com