etcd的核心特性之一,就是我们可以监控key的数据变化,只要有人修改了key的值,我们都可以监控到变化的值。
监控指定Key
cli, err := clientv3.New(...忽略...)
if err != nil {
log.Fatal(err)
}
defer cli.Close()
// 监控key=/tizi 的值
rch := cli.Watch(context.Background(), "/tizi")
// 通过channel遍历key的值的变化
for wresp := range rch {
for _, ev := range wresp.Events {
fmt.Printf("%s %q : %q\n", ev.Type, ev.Kv.Key, ev.Kv.Value)
}
}
提示,具体如何连接etcd请参考, 连接etcd章节。
根据key前缀监控一组key的值
cli, err := clientv3.New(...忽略...)
if err != nil {
log.Fatal(err)
}
defer cli.Close()
// 监控以/tizi为前缀的所有key的值
rch := cli.Watch(context.Background(), "/tizi", clientv3.WithPrefix())
// 通过channel遍历key的值的变化
for wresp := range rch {
for _, ev := range wresp.Events {
fmt.Printf("%s %q : %q\n", ev.Type, ev.Kv.Key, ev.Kv.Value)
}
}