code: func (db *BytesConnectionRedis) Delete(key string, opts ...datasync.DelOption) (found bool, err error) {
  	if db.closed {
  		return false, fmt.Errorf("Delete(%s) called on a closed connection", key)
  	}
  	db.Debugf("Delete(%s)", key)
  
  	keysToDelete := []string{}
  
  	var keyIsPrefix bool
  	for _, o := range opts {
  		if _, ok := o.(*datasync.WithPrefixOpt); ok {
  			keyIsPrefix = true
  		}
  	}
  	if keyIsPrefix {
  		iterator, err := db.ListKeys(key)
  		if err != nil {
  			return false, err
  		}
  		for {
  			k, _, last := iterator.GetNext()
  			if last {
  				break
  			}
  			keysToDelete = append(keysToDelete, k)
  		}
  		if len(keysToDelete) == 0 {
  			return false, nil
  		}
  		db.Debugf("Delete(%s): deleting %v", key, keysToDelete)
  	} else {
  		keysToDelete = append(keysToDelete, key)
  	}
  
  	intCmd := db.client.Del(keysToDelete...)
  	if intCmd.Err() != nil {
  		return false, fmt.Errorf("Delete(%s) failed: %s", key, intCmd.Err())
  	}
  	return (intCmd.Val() != 0), nil
  }
docs: // Delete deletes all the keys that start with the given match string.