我的要求:
如果表中有数据更改(无论是插入,更新,删除),我应该是 能够使用我的逻辑更新我的缓存,该逻辑使用表进行操作。
Technology : Node, rethinkDb
我的实施:
我在rethinkDb中听说过table.changes()
,它会发出代表表格更改的对象流。
我试过这段代码
r.table('games').changes().run(conn, function(err, cursor) {
cursor.each(console.log);
});
它的工作正常,我的意思是我得到的事件是我把我的逻辑用于操纵。
我的问题是指发布更改的时间。我的意思是有任何限制。 它是如何工作的?
我在他们的文档中读到了这个,
服务器最多可缓冲100,000个元素。如果达到缓冲区限制,则将丢弃早期更改,并且客户端将收到格式为{error:" Changefeed cache over array size limit,跳过X元素。"}的对象,其中X是跳过的元素数量。
我没有理解这一点。我想在100,000之后它不会像old_vale和new_value那样给出变化。
请解释这个约束,并根据要求这是否有效?
我非常喜欢这项技术。请帮我。
答案 0 :(得分:3)
简短回答:没有限制。
缓冲区的100.000元素是您不从光标检索更改。服务器将持续缓冲100,000个元素。如果您使用each
,则会在更改完成后立即检索更改,因此您不会受到限制的影响。