IMHO, ConcurrentHashMap is a suitable cache provided
- you don't need external access
- the total heap size is not too large e.g. 4 GB
- the level of concurrency is not more than about 20 CPUs (not just threads)
- it has the functionality you need.
- your expiry model is very simple.
Redis is designed to do much more than just cache values, and can be shared between processes using different languages, or even accessed via command line.