How would you implement a custom caching data structure with a Least Recently Used (LRU) eviction policy?