The possibilities are kind of limitless. Redis implements a lot of data structures beyond a simple k/v map.
A simple non-caching example, but we use it for distributed locking, more specifically a distributed countdown latch. This is much cleaner and more performant (for us) than doing a similar operation in a traditional RDBMS.
Another very common example that is used in a lot of tutorials is maintaining a leaderboard using a sorted set.
All the normal strategies for dealing with distributed services still apply.
In most of these scenarios, you are still persisting data to stable storage. So, you would take the performance hit and load the data from the database.
A simple non-caching example, but we use it for distributed locking, more specifically a distributed countdown latch. This is much cleaner and more performant (for us) than doing a similar operation in a traditional RDBMS.
Another very common example that is used in a lot of tutorials is maintaining a leaderboard using a sorted set.