一个更有趣的示例程序

     我们上边写的那个示例程序不够好玩。他以简单的方式写入到集群而没有检查写入的正确性。

     从我们的观点看,集群接收写入命令可能每次操作总是把键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) |

网友评论