2014-11-06 62 views
1

目前的情况: -如何仅在数据更改时更新缓存?

我有一个C#代码从MySQL服务器获取数据并存储在Redis的JSON格式 数据(从Strored程序数据)。这会更新缓存(redis)大约每半个小时,而不管mysql中的数据是否保持相同/不同(因为我没有关于数据更改的线索)。

要求: -

需要建立在同一个系统,而不是更新在预定的时间间隔高速缓存,即使数据是相同的,我需要改变,只有当数据被更改的缓存。

Couchbase: -

我听到的couchbase意见。我对此很新。我可以将数据从mysql更改为基于couchbase的JSON文档。我的问题是,这个couchbase的意见是适合的吗?

我的想法是

1. Data from MySql  => JSON in couchbase bucket 
2. StoredProcedure logic => couchbase views 

当从couchbase桶的数据发生变化,那么这种观点应该再次运行,否则应该从高速缓存,而无需再次运行视图获取。这是可能的意见?

如果不是,请告诉任何其他解决方案。

在此先感谢。

回答

2

在couchbase视图中,可以手动或自动触发更新。

对于自动触发视图更新,您可以通过两种方式实现:定期更新和基于更改文档数量的更新。您可以通过GET查询查看当前设置:http://Administrator:[email protected]:8091/settings/viewUpdateDaemon 并通过POST请求更新它们。

查看更多详情请参阅Couchbase服务器manual文档。

另一种方法是手动触发couchbase视图更新。这可以通过使用stale=false参数或stale=update_after进行查询来完成。 如果您通过stale=false视图索引将被更新,您将获得实际数据。如果您有大量文档,此查询可能需要很长时间。 如果您通过stale=update_after,视图将返回当前数据(可能缓存),返回数据后将开始索引更新过程。这个查询会很快,但你可以获得缓存的数据,但如果你只是想触发更新过程,这种方法已经足够了。

以下是链接到docs欲了解更多信息。

所以你应该决定什么方法更适合你,如果你需要更新的数据立即填充在缓存中,手动触发会更好。如果你不需要这些,你可以使用自动方法并设置更新触发器在一定数量的记录更新之后运行reindex。

+0

谢谢你..我检查了那些东西.. :) – shanmugharaj 2014-11-07 13:15:52

相关问题