一個更有趣的示例程序
我們上邊寫的那個示例程序不夠好玩。他以簡單的方式寫入到集群而沒有檢查寫入的正確性。
從我們的觀點看,集群接收寫入命令可能每次操作總是把鍵foo寫入 為42,并且我們一點也沒有注意到。
所以在redis-rb-cluster庫內(nèi),有一個更有趣的應(yīng)用程序consistency-test.rb。他使用了一組計數(shù)器,默認是1000,并且發(fā)送INCR命令來增加計數(shù)器。
然而除了寫入命令,這個程序還做了其它的兩件事:
》當(dāng)計數(shù)器被 INCR更改,這個程序?qū)⒂涀∵@次寫入。
》每次寫入都會讀取一個隨機的計數(shù)器,并且檢查他的值是否是預(yù)期的值,并和內(nèi)存中的值進行對比。
這意味著這是一個簡單的一致性檢查程序,并且這個程序會告訴你集群是否有丟失寫入,或者有收到寫入但沒有收到確認。在第一個示例我們將看到一個計數(shù)器有一個值,這個值小于我們記住的的值,第二個示例這個值比記住的值大。
運行consistency-test 程序,每秒種將產(chǎn)生一行輸出:
$ ruby consistency-test.rb925 R (0 err) | 925 W (0 err) |5030 R (0 err) | 5030 W (0 err) |9261 R (0 err) | 9261 W (0 err) |13517 R (0 err) | 13517 W (0 err) |17780 R (0 err) | 17780 W (0 err) |22025 R (0 err) | 22025 W (0 err) |25818 R (0 err) | 25818 W (0 err) |