一个更有趣的示例程序
我们上边写的那个示例程序不够好玩。他以简单的方式写入到集群而没有检查写入的正确性。
从我们的观点看,集群接收写入命令可能每次操作总是把键foo写入 为42,并且我们一点也没有注意到。
所以在redis-rb-cluster库内,有一个更有趣的应用程序consistency-test.rb。他使用了一组计数器,默认是1000,并且发送INCR命令来增加计数器。
然而除了写入命令,这个程序还做了其它的两件事:
》当计数器被 INCR更改,这个程序将记住这次写入。
》每次写入都会读取一个随机的计数器,并且检查他的值是否是预期的值,并和内存中的值进行对比。
这意味着这是一个简单的一致性检查程序,并且这个程序会告诉你集群是否有丢失写入,或者有收到写入但没有收到确认。在第一个示例我们将看到一个计数器有一个值,这个值小于我们记住的的值,第二个示例这个值比记住的值大。
运行consistency-test 程序,每秒种将产生一行输出:
$ 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) |
延伸阅读
学习是年轻人改变自己的最好方式
