mirror of
https://github.com/camptocamp/odoo-cloud-platform.git
synced 2026-06-23 18:04:34 +00:00
[PERF] fix performance hit
On the cloud platform of Camptocamp, a shared redis is used to store the sessions of the different projects -> the number of keys is huge, and using an iterative match kills the performance because of the networking overhead. We switch to using redis.key(pattern), and since the pattern typically has a leading string which will allow redis to find the correct bucket, the performance should be good.
This commit is contained in:
@@ -176,17 +176,10 @@ class RedisSessionStore(SessionStore):
|
||||
identifiers = set(identifiers)
|
||||
not_found = set()
|
||||
for partial_sid in identifiers:
|
||||
try:
|
||||
next(
|
||||
self.redis.scan_iter(
|
||||
match=f"{self.prefix}{partial_sid}*",
|
||||
count=1,
|
||||
)
|
||||
)
|
||||
except StopIteration:
|
||||
# No matches found
|
||||
key = f"session::{self.prefix}:{partial_sid}*"
|
||||
match = self.redis.keys(pattern=key)
|
||||
if not match:
|
||||
not_found.add(partial_sid)
|
||||
|
||||
return not_found
|
||||
|
||||
def delete_from_identifiers(self, identifiers: builtins.list[PartialSid]):
|
||||
|
||||
Reference in New Issue
Block a user