Classes
LRUCache
18
▼
Thread-safe LRU cache with optional TTL support.
Uses OrderedDict + RLock for O(1) operations with…
LRUCache
18
▼
Thread-safe LRU cache with optional TTL support.
Uses OrderedDict + RLock for O(1) operations with thread safety.
Eviction Strategy: True LRU - move_to_end() on every access, popitem(last=False) for eviction. This provides better hit rates than FIFO for workloads with temporal locality.
Complexity:
- get: O(1) average
- set: O(1) average
- get_or_set: O(1) + factory cost on miss
- clear: O(n)
Methods
enabled
0
bool
▼
Whether caching is enabled.
property
enabled
0
bool
▼
def enabled(self) -> bool
Returns
bool
maxsize
0
int
▼
Maximum cache size.
property
maxsize
0
int
▼
def maxsize(self) -> int
Returns
int
get
1
V | None
▼
Get value by key, returning None if not found or expired.
Updates LRU order on…
get
1
V | None
▼
def get(self, key: K) -> V | None
Get value by key, returning None if not found or expired.
Updates LRU order on hit. Counts as miss if disabled.
Parameters
| Name | Type | Description |
|---|---|---|
key |
— |
Returns
V | None
get_or_set
2
V
▼
get_or_set
2
V
▼
def get_or_set(self, key: K, factory: Callable[[], V]) -> V
Parameters
| Name | Type | Description |
|---|---|---|
key |
— |
|
factory |
— |
Returns
V
get_or_set
2
V
▼
get_or_set
2
V
▼
def get_or_set(self, key: K, factory: Callable[[K], V]) -> V
Parameters
| Name | Type | Description |
|---|---|---|
key |
— |
|
factory |
— |
Returns
V
get_or_set
2
V
▼
Get value or compute and cache it.
This is the preferred pattern for cache usa…
get_or_set
2
V
▼
def get_or_set(self, key: K, factory: Callable[[], V] | Callable[[K], V]) -> V
Get value or compute and cache it.
This is the preferred pattern for cache usage - avoids the check-then-set race condition and reduces boilerplate.
Parameters
| Name | Type | Description |
|---|---|---|
key |
— |
Cache key |
factory |
— |
Callable that returns the value to cache on miss |
Returns
V
Cached or newly computed value
set
2
▼
Set value, evicting LRU entries if at capacity.
set
2
▼
def set(self, key: K, value: V) -> None
Parameters
| Name | Type | Description |
|---|---|---|
key |
— |
|
value |
— |
delete
1
bool
▼
Delete a key from the cache.
delete
1
bool
▼
def delete(self, key: K) -> bool
Parameters
| Name | Type | Description |
|---|---|---|
key |
— |
Returns
bool
True if key was present and deleted, False otherwise.
clear
0
▼
Clear all entries and reset statistics.
clear
0
▼
def clear(self) -> None
enable
0
▼
Enable caching.
enable
0
▼
def enable(self) -> None
disable
0
▼
Disable caching (get returns None, set is no-op).
disable
0
▼
def disable(self) -> None
stats
0
dict[str, Any]
▼
Get cache statistics.
stats
0
dict[str, Any]
▼
def stats(self) -> dict[str, Any]
Returns
dict[str, Any]
Dictionary with:
- hits: Number of cache hits
- misses: Number of cache misses
- hit_rate: Cache hit rate (0.0 to 1.0)
- size: Current cache size
- max_size: Maximum cache size
- ttl: Time-to-live in seconds (None if disabled)
- enabled: Whether caching is enabled
- name: Cache name (if set)
reset_stats
0
▼
Reset hit/miss statistics without clearing cache.
reset_stats
0
▼
def reset_stats(self) -> None
keys
0
list[K]
▼
Return list of all keys (snapshot, may include expired).
keys
0
list[K]
▼
def keys(self) -> list[K]
Returns
list[K]
Internal Methods 4 ▼
__init__
2
▼
Initialize LRU cache.
__init__
2
▼
def __init__(self, maxsize: int = 128, ttl: float | None = None) -> None
Parameters
| Name | Type | Description |
|---|---|---|
maxsize |
— |
Maximum entries (0 = unlimited, default 128) Default:128
|
ttl |
— |
Time-to-live in seconds (None = no expiry) Default:None
|
__contains__
1
bool
▼
Check if key exists and is not expired.
Does NOT update LRU order or stats. Us…
__contains__
1
bool
▼
def __contains__(self, key: K) -> bool
Check if key exists and is not expired.
Does NOT update LRU order or stats. Use for existence checks only.
Parameters
| Name | Type | Description |
|---|---|---|
key |
— |
Returns
bool
__len__
0
int
▼
Return number of entries (may include expired if TTL set).
__len__
0
int
▼
def __len__(self) -> int
Returns
int
__repr__
0
str
▼
__repr__
0
str
▼
def __repr__(self) -> str
Returns
str