code: func (db *DB) ZAdd(key []byte, args ...ScorePair) (int64, error) {
  	if len(args) == 0 {
  		return 0, nil
  	}
  
  	t := db.zsetBatch
  	t.Lock()
  	defer t.Unlock()
  
  	var num int64
  	for i := 0; i < len(args); i++ {
  		score := args[i].Score
  		member := args[i].Member
  
  		if err := checkZSetKMSize(key, member); err != nil {
  			return 0, err
  		}
  
  		if n, err := db.zSetItem(t, key, score, member); err != nil {
  			return 0, err
  		} else if n == 0 {
  			//add new
  			num++
  		}
  	}
  
  	if _, err := db.zIncrSize(t, key, num); err != nil {
  		return 0, err
  	}
  
  	err := t.Commit()
  	return num, err
  }
docs: // ZAdd add the members.