Caching, often the most important application of Redis: oops.
Updates in Postgres are notoriously more expensive than inserts (generate garbage, require vacuuming); durability guarantees, not important for caching, make writes significantly slower.
Automatic expiration is very convenient and fool-proof.
You can disable most of what you don't need, e.g. by making a table unlogged: https://www.postgresql.org/docs/current/sql-createtable.html.... Synchronous commits, autovacuum, etc. can also be turned off. Redis of course is still going to be faster, just not in a way that the median company should care about.
Caching, often the most important application of Redis: oops.
Updates in Postgres are notoriously more expensive than inserts (generate garbage, require vacuuming); durability guarantees, not important for caching, make writes significantly slower.
Automatic expiration is very convenient and fool-proof.