我在这个postgresql查询中获得了缓存数据吗?

时间:2015-02-09 14:25:22

标签: php jquery postgresql caching

我希望这不是一个愚蠢的问题,或者是一个错误的问题。 为了我的代码的目的,我得到一个带有jquery的按钮的值,在表中用ajax发布它,然后在代码的另一部分中获取它。这是一个简单的解释。我很欣赏这种关注,但不要质疑为什么我这样做,因为这是它的工作方式,我不会改变它。

现在的问题是,我最终使用select查询得到的数据只是在最后一页重新加载之前注册的数据。

如果您需要查看代码,这是我之前关于同一问题的问题的链接:Code returns the latest value before last refresh instead of the latest value inserted?

我想知道我获得此类数据的原因是否与缓存有关?

2 个答案:

答案 0 :(得分:1)

您的问题似乎是竞争条件,而不是缓存问题。当运行2个异步进程,其中1正在更新/插入而另一个正在读取时,“读取”进程极有可能在提交数据之前开始读取。最好的解决方案是进行更新并读入“1个线程”(同步),其中更新和读取按特定顺序完成,并且保证更新在读取开始之前完成。

Postgres并没有真正以某种方式“缓存”数据,在这种情况下会返回旧的结果,但永远不会返回未提交的结果 - 必须首先提交更新,然后任何其他会话才能看到它们。

答案 1 :(得分:0)

尽管我最初认为自己是竞争条件(很好的建议),但它实际上是客户端/服务器端交互问题。 竞争条件可能导致显示先前的结果,但不一定是前一页加载之前的结果。

然而,我发现Joe Love的答案非常有用,因为我之前没有听过/考虑比赛状况。另外,好的说法是postgres并没有真正“缓存”数据