Question - Rev counter

For this project here https://www.robotshop.com/letsmakerobots/node/22474, I am needing a simple sensor to indicate the number of revolutions a tsecond that an axle makes.  However this will be in a dirty/oily place (under isde of carriage bogie) so I am wondering on the best method of sensor to use.  I think I have narrowed it down to three possibilites -

1/ Optical slot interupter with seperate encoding wheel.  Probably easiest option but how prone to dirt and mis reading.  Could be hard to clean.

2/Magnetic sensor - hall effect switch.  Magnet on axle , most robust mechanically, may not be fast enough to record all pulses (especially with pickaxe?)

3/ Optical reflective sensor. Thinking here to put the alternate black/white segments on the rail wheel. Probably somewhere in the middle as paint will get dirty but easier to clean than (1)

 

The axle can probably rotate up to 30 times a second.

 

Thoughts please on options

 

Consider that it may be easy

Consider that it may be easy enough to find a mechanical switch that is rated for wet or dirty conditions.