Redis demands keeping things as simple as possible.
Post identifier is increased globally because it's conceptually global too. Each user doesn't own a collection of posts, but posts are a global collection and they're assigned to users.
Using incr
command each process connecting to Redis will get an unique post identifier, thus, there's no problem here with this strategy.
In this case, we can reduce the contention on updating next_post_id in simultaneous accesses
This isn't true, because Redis isn't multi-threaded when reading and writing to a database. It's single-threaded. That is, there're no simultaneous accesses, but sequential accesses. You should realize, then, that there would be no benefit on doing what you said.
Maybe you want to take a look at this other Q&A: Redis is single-threaded, then how does it do concurrent I/O?