So, 25,000 requests per minute ≈ 420 queries per second. Though it also depends on whether there is a 1:1 correlation for an "event" to a "query." It might be that for each "event" you need to actually fire off multiple queries.
In any regard, that is precisely the kind of aggregations and filtering that Apache Pinot does super well at.
LinkedIn does exactly that sort of thing with Pinot for post views and likes. And they have a billion+ users worldwide.
I'm just spitballing here, but the 10 recently-viewed posts — might you be able to be solve this by using a
Timestamp index, and then an ORDER BY and LIMIT? (SQL experts, please chime in if I am off-base.)