Performance 如何仅在数据更改时更新缓存?

Performance 如何仅在数据更改时更新缓存?,performance,caching,scalability,couchbase,Performance,Caching,Scalability,Couchbase,当前场景:- 我有一个C#代码,它从MySql服务器获取数据(来自Strored过程的数据),并存储 Redis中JSON格式的数据。无论mysql中的数据是否保持相同/不同(因为我没有关于数据更改的线索),这大约每半小时更新一次缓存(redis) 要求:- 需要构建相同的系统,而不是在预定义的时间间隔内更新缓存,即使数据相同,我只需要在数据更改时修改缓存 沙发床:- 我听说过couchbase的观点。我对这一点很陌生。我可以在couchbase中将我的数据从mysql更改为JSON文档。我的问

当前场景:-

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

要求:-

需要构建相同的系统,而不是在预定义的时间间隔内更新缓存,即使数据相同,我只需要在数据更改时修改缓存

沙发床:-

我听说过couchbase的观点。我对这一点很陌生。我可以在couchbase中将我的数据从mysql更改为JSON文档。我的问题是,这个couchbase视图是否适合这样做

我的想法是

1. Data from MySql       => JSON in couchbase bucket
2. StoredProcedure logic => couchbase views
当couchbase bucket中的数据发生更改时,此视图应再次运行,否则它应在不再次运行视图的情况下从缓存中获取数据。这在视图中是可能的吗

如果没有,请告诉其他解决方案


提前感谢。

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

对于自动触发视图更新,您可以通过两种方式进行:定期更新和根据更改文档的数量进行更新。您可以通过GET query to查看当前设置:
http://Administrator:Password@节点名:8091/settings/viewupdatedemon
并通过POST请求进行更新

查看更多详细信息查看Couchbase服务器文档

另一种方法是手动触发couchbase视图更新。这可以通过使用
stale=false
param或
stale=update\u在
之后查询视图来完成。 如果您通过
stale=false
视图索引将被更新,您将获得实际数据。如果您有大量文档,此查询可能会花费大量时间。 如果在之后传递
stale=update\u,视图将返回当前数据(可能是缓存的),并且在返回数据后将启动索引更新过程。这个查询会很快,但您可以获取缓存数据,但如果您只是想触发更新过程,这种方法就足够了

这里是一个链接,以获取更多信息

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