package etcd import ( "context" "fmt" "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" "pro2d/common" "pro2d/common/logger" "testing" ) func TestEtcdClient_GetByPrefix(t *testing.T) { err := NewEtcdClient(common.GlobalConf.Etcd) if err != nil { logger.Error(err) return } gameInfo := GEtcdClient().GetByPrefix(common.GlobalConf.AccountConf.Name) for k, v := range gameInfo { logger.Debug("game info key: %v val: %v", k, v) } rch := GEtcdClient().etcd.Watch(context.Background(), fmt.Sprintf("/%s/", common.GlobalConf.AccountConf.Name), clientv3.WithPrefix()) go func() { for wresp := range rch { for _, ev := range wresp.Events { switch ev.Type { case mvccpb.PUT: //修改或者新增 logger.Debug("account put key: %s val: %s", ev.Kv.Key, ev.Kv.Value) case mvccpb.DELETE: //删除 logger.Debug("account delete key: %s val: %s", ev.Kv.Key, ev.Kv.Value) } } } }() game := GEtcdClient().etcd.Watch(context.Background(), fmt.Sprintf("/%s/", common.GlobalConf.GameConf.Name), clientv3.WithPrefix()) for wresp := range game { for _, ev := range wresp.Events { switch ev.Type { case mvccpb.PUT: //修改或者新增 logger.Debug("game put key: %s val: %s", ev.Kv.Key, ev.Kv.Value) case mvccpb.DELETE: //删除 logger.Debug("game delete key: %s val: %s", ev.Kv.Key, ev.Kv.Value) } } } }