2012-07-02 37 views
2

我正在運行couchbase服務器2.0(dev預覽版4)並使用.net客戶端庫版本1.2。Couchbase .Net客戶端庫GetView緩存問題

當我添加一些文檔(json)到我的數據庫,然後在幾秒鐘內(少於10),我嘗試通過GetView通過.net客戶端庫獲取此文檔,它始終返回第一個查詢的舊值。只有在第二次查詢時,它才返回實際​​值。

當我通過REST API執行相同的查詢時,它返回實際值。

任何人都可以提供這方面的一些信息嗎?

回答

3

Couchbase中視圖的默認行爲是逐步更新視圖的索引。它正在請求一個實際觸發增量更新的視圖。換句話說,當您第一次請求視圖時,您觸發了要在服務器上更新的索引(只有新文檔需要編制索引)。因此,在您對GetVew進行第二次呼叫時,新文檔已被編入索引。

通過這種方式,Couchbase視圖最終一致。如果陳舊的讀取對於您的情況不合適或不可容忍,則可以在請求視圖並修改默認行爲時使用Stale fluent方法。

如此給力的觀點之前得到結果進行更新:

var view = client.GetView("beers", "by_name").Stale(StaleMode.False); 

一些更多的信息,請訪問http://www.couchbase.com/docs/couchbase-sdk-net-1.2/api-reference-view.html

- 約翰

+0

我已經設置陳舊模式爲false,但它沒有幫助。但奇怪的是,通過瀏覽器的REST api運行良好...... – m03geek