mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-06 12:45:03 -04:00
Optimise async get event lookups (#13435)
Still maintains local in memory lookup optimisation, but does any external lookup as part of the deferred that prevents duplicate lookups for the same event at once. This makes the assumption that fetching from an external cache is a non-zero load operation.
This commit is contained in:
parent
6dd7fa12dc
commit
41320a0554
4 changed files with 87 additions and 8 deletions
|
@ -834,9 +834,26 @@ class AsyncLruCache(Generic[KT, VT]):
|
|||
) -> Optional[VT]:
|
||||
return self._lru_cache.get(key, update_metrics=update_metrics)
|
||||
|
||||
async def get_external(
|
||||
self,
|
||||
key: KT,
|
||||
default: Optional[T] = None,
|
||||
update_metrics: bool = True,
|
||||
) -> Optional[VT]:
|
||||
# This method should fetch from any configured external cache, in this case noop.
|
||||
return None
|
||||
|
||||
def get_local(
|
||||
self, key: KT, default: Optional[T] = None, update_metrics: bool = True
|
||||
) -> Optional[VT]:
|
||||
return self._lru_cache.get(key, update_metrics=update_metrics)
|
||||
|
||||
async def set(self, key: KT, value: VT) -> None:
|
||||
self._lru_cache.set(key, value)
|
||||
|
||||
def set_local(self, key: KT, value: VT) -> None:
|
||||
self._lru_cache.set(key, value)
|
||||
|
||||
async def invalidate(self, key: KT) -> None:
|
||||
# This method should invalidate any external cache and then invalidate the LruCache.
|
||||
return self._lru_cache.invalidate(key)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue