anchor.diff:    });
   }
   
  +test_pg(){
  +    RedisConnection conn = new RedisConnection();
  +    conn.connect('localhost',6379).then((Command command){
  +      command.send_object(["SET","key","0"])
  +      .then((var response){
  +        assert(response == 'OK');
  +      });
  +      command.send_object(["INCR","key"])
  +      .then((var response){
  +        assert(response == 1);  
  +      });
  +      command.send_object(["INCR","key"])
  +      .then((var response){
  +        assert(response == 2);
  +      });
  +      command.send_object(["INCR","key"])
  +      .then((var response){
  +        assert(response == 3);
  +      });
  +      command.send_object(["GET","key"])
  +      .then((var response){
  +         print(response); // 3
  +      });
  +    });
  +}
  +
  +
   main(){
  -  test_pubsub();
  -}+  //test_muliconnections();
  +  test_performance2();
  +}
  
positive.code:   });
  }
  
  test_muliconnections(){
    const int N = 2000000;
    const int K = 50;
    int start;
    int c=0;
    
    print("test started, please wait ...");
    start =  new DateTime.now().millisecondsSinceEpoch;
    for(int j=0;j<K;j++){
      RedisConnection conn = new RedisConnection();
      conn.connect('localhost',6379).then((Command command){
        command.pipe_start();
        for(int i=j;i<N;i+=K){ 
          command.set("test $i","$i")
          .then((v){
            assert(v=="OK");
            c++;
            if(c==N){
              double diff = (new DateTime.now().millisecondsSinceEpoch - start)/1000.0;
              double perf = N/diff;
              print("$N operations done in $diff s\nperformance $perf/s");
            }
          });
        }
        command.pipe_end();
       });
    }
  }
  
  
  test_transactions(){
    RedisConnection conn = new RedisConnection();
    conn.connect('localhost',6379).then((Command command){    
      command.multi().then((Transaction trans){
          trans.send_object(["SET","val","0"]);
          for(int i=0;i<200000;++i){
            trans.send_object(["INCR","val"]).then((v){
              assert(i==v);
            });
          }
          trans.send_object(["GET","val"]).then((v){
            print("number is now $v");
          });
          trans.exec();
      });
    });
  }
  
negative.code: 
  import 'dart:async';
  import 'dart:convert';
  import 'dart:collection';
  import '../lib/redis.dart';
  
  
  