我正在开发使用来自postgreSQL数据库的客户端数据的Java REST API。Web服务体系结构:Redis(作为缓存)和PostgreSQL的持久性
的数字: 。开始时约有600个客户端 。他们中的一些人每隔几秒做一次请求
由于客户端为每个请求付费,因此我们需要控制它们的请求数是否达到其限制,并且在每次请求之后查询postgresql数据(更新'hitsCounter'字段的值)在性能方面不好,我们正在考虑使用redis来实现缓存系统。
理念:客户做他的第一个请求 后,我们从PostgreSQL的找回了自己的数据,并将其存储到Redis的缓存。然后使用这个缓存数据,例如增加'hitsCounter'键值,直到客户端停止请求。 同时,后台进程每隔几分钟就会将数据从redis缓存保存到db表中,因此最终我们将更新后的数据返回给postgresql,我们可以在将来处理它们。
我认为这显然会提高性能,但我不确定这个“后台进程”。一个选项是检查缓存元素的TTL,如果它小于某个值(这意味着客户端已完成请求),则保留数据。
我很想听听关于此的一些意见。这是一个好主意吗?你知道一些更好的选择吗?
谢谢Richard,很高兴听到有关未记录的表格,我不是Postgresql的专家,所以我不知道这个选项的存在。 关于我们的测量,我们正在预测这些问题,我们还没有真实的统计数据。目前我们知道我们需要一个缓存和潜在的客户端数量,这都是:)首先,我将在没有缓存的情况下实现系统,并使用一些指标,之后我将执行相同的添加redis。 关于您的问题:我们现在认为,丢失5秒的查询日志并不重要。系统将无自动收据。 – Emilio 2013-04-30 10:02:10
假设查询请求与客户的ID一起记录,我只想懒惰地解析日志文件并批量更新数据库。这是我最简单的解决方案。 – 2013-04-30 10:07:15