What can go wrong if I use SimpleCache in my Flask app
For your use case with gunicorn, there is no multi-threading issue since each service run single-threadedly in its own process. But a potential problem would be "dirty" read of the data.
Think about the following case:

process1 read from db and populate its own cache, cache1
process2 read from the same table using the same query and populate its own cache, cache2
process2 update the table with new data and invalidate old cache2
process1 execute the same query again, reading from cache1 with the outdated data!. This is when problem happens because process1/cache1 is not aware of the database update
We are using the following setup: NGINX+Gunicorn+Flask. We need to add just a little bit of caching, no more than 5Mb per Flask worker. SimpleCache seems to be simplest possible solution - it uses memory locally, inside the Python process itself. 
Unfortunately, the documentation states the following: 

"Simple memory cache for single process environments. This class
  exists mainly for the development server and is not 100% thread safe."

However, I fail to see where thread safety would matter at all in our setup. I think that Gunicorn keeps several Flask workers running, and each worker has its own small cache. What can possibly go wrong?