Non-blocking incrementation with single button pressure
In your approach a button press will be detected every 100ms when you just keep the button pressed. So you have to set a flag when the button is pressed. When the button is not pressed while your flag is set, that's the event you're looking for. In this way you can detect both a button press and a release respectively.
As @JRobert mentioned, there still has to be an amount of time between two calls to such a routine to provide some button debouncing.

bool pressed_flag=false;
bool button_timestamp=millis();
uint16_t button_period=100;

if(millis()-button_timestamp&gt;button_period){
  button_timestamp=millis();
  if(redButton.isPressed() &amp;&amp; !pressed_flag){
    // button has just been pressed
    // you can do sth. here
    pressed_flag=true;
  }
  else if(!redButton.isPressed() &amp;&amp; pressed_flag){
    // button has just been released
    // you can do sth. here
    pressed_flag=false;
  }
}