import LRUCache import time def expensive_query(query): print(f"Running query: {query}") time.sleep(2) # Simulate delay return f"Result for '{query}'" class QueryEngine: def __init__(self, cache_size=5): self.cache = LRUCache(cache_size) def run_query(self, query): cached = self.cache.get(query) if cached != -1: print(f"Cache hit for: {query}") return cached result = expensive_query(query) self.cache.put(query, result) return result engine = QueryEngine() print(engine.run_query("SELECT * FROM users")) print(engine.run_query("SELECT * FROM orders")) print(engine.run_query("SELECT * FROM users")) # Cached! print(engine.run_query("SELECT * FROM products")) print(engine.run_query("SELECT * FROM inventory")) print(engine.run_query("SELECT * FROM orders")) # Might be evicted