Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Web服务体系结构:Redis(as-cache)&;用于持久性的PostgreSQL_Java_Postgresql_Rest_Architecture_Redis - Fatal编程技术网

Java Web服务体系结构:Redis(as-cache)&;用于持久性的PostgreSQL

Java Web服务体系结构:Redis(as-cache)&;用于持久性的PostgreSQL,java,postgresql,rest,architecture,redis,Java,Postgresql,Rest,Architecture,Redis,我正在开发一个JavaRESTAPI,它使用postgreSQL数据库中的客户机数据 数字: . 一开始大约有600个客户 . 他们中的一些人每隔几秒钟就做一次请求 由于客户端按请求付费,我们需要控制其成功请求的数量是否达到其限制,并且由于在每个请求后查询postgresql数据(更新“hitsCounter”字段的值)的性能不佳,我们正在考虑使用redis实现缓存系统 想法: 客户机发出第一个请求后,我们从postgresql检索他的数据并将其存储到redis缓存中。然后处理该缓存数据,例如增

我正在开发一个JavaRESTAPI,它使用postgreSQL数据库中的客户机数据

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

由于客户端按请求付费,我们需要控制其成功请求的数量是否达到其限制,并且由于在每个请求后查询postgresql数据(更新“hitsCounter”字段的值)的性能不佳,我们正在考虑使用redis实现缓存系统

想法: 客户机发出第一个请求后,我们从postgresql检索他的数据并将其存储到redis缓存中。然后处理该缓存数据,例如增加“HitsCenter”键值,直到客户端停止执行请求。 同时,每隔几分钟,后台进程就会将数据从redis缓存持久化到db表,因此最后我们会将更新后的数据返回到postgresql,我们可以在将来处理这些数据。

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


我很想听到一些关于这方面的意见。这是个好主意吗?你知道更好的选择吗?

这个想法非常合理,但你没有提到你做过的任何测量。目标硬件与目标事务级别之间的瓶颈是什么?如果你不知道,你就不能说

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

还不够?将其粘贴到ssd上自己的表空间中

还不够?将其粘贴到自己的vm/计算机上

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


还有-他们每次查询要支付多少钱?如果电源中断,您会丢失5秒钟的查询日志,您是否在意?您是否需要能够为每个查询复制带有原始详细信息和时间戳的收据?

谢谢Richard,很高兴听到关于未标记表的消息,我不是Postgresql的专家,所以我不知道该选项的存在。关于我们的测量,我们正在预测问题,但我们仍然没有关于这方面的真实统计数据。现在我们知道我们需要一个缓存,以及潜在客户机的数量,仅此而已:)首先,我将实现一个没有缓存的系统,并使用一些指标,然后我将添加redis。关于您的问题:我们认为,到目前为止,丢失5秒的查询日志并不重要。系统将在没有自动收据的情况下工作。假设查询请求是使用客户ID记录的,那么我只会懒散地解析日志文件并批量更新数据库。我觉得这是最简单的解决办法。你成功地让它工作了吗?您是如何将Redis应用于Postgres persistence的?