How would you design a cache for a high-traffic application, including eviction policy and concurrency considerations?