33 lines
891 B
Python
33 lines
891 B
Python
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
|
|
|