From: Michael Tremer Date: Wed, 25 Oct 2023 15:06:59 +0000 (+0000) Subject: wiki: Migrate from memcache to redis X-Git-Url: http://git.ipfire.org/?p=ipfire.org.git;a=commitdiff_plain;h=df4f5dfb97e6865f584879f8bf0f822bf7c1e0f3 wiki: Migrate from memcache to redis Signed-off-by: Michael Tremer --- diff --git a/src/backend/wiki.py b/src/backend/wiki.py index ef83e1e3..204544cb 100644 --- a/src/backend/wiki.py +++ b/src/backend/wiki.py @@ -55,22 +55,12 @@ class Wiki(misc.Object): return page and not page.was_deleted() def get_page_title(self, page, default=None): - # Try to retrieve title from cache - title = self.memcache.get("wiki:title:%s" % page) - if title: - return title - - # If the title has not been in the cache, we will - # have to look it up doc = self.get_page(page) if doc: title = doc.title else: title = os.path.basename(page) - # Save in cache for forever - self.memcache.set("wiki:title:%s" % page, title) - return title def get_page(self, page, revision=None): @@ -111,9 +101,6 @@ class Wiki(misc.Object): page = self._get_page("INSERT INTO wiki(page, author_uid, markdown, changes, address) \ VALUES(%s, %s, %s, %s, %s) RETURNING *", page, author.uid, content or None, changes, address) - # Update cache - self.memcache.set("wiki:title:%s" % page.page, page.title) - # Send email to all watchers page._send_watcher_emails(excludes=[author]) @@ -561,13 +548,18 @@ class File(misc.Object): if res: return bytes(res.data) - def get_thumbnail(self, size): + async def get_thumbnail(self, size): assert self.is_bitmap_image() - cache_key = "-".join((self.path, util.normalize(self.filename), self.created_at.isoformat(), "%spx" % size)) + cache_key = "-".join(( + self.path, + util.normalize(self.filename), + self.created_at.isoformat(), + "%spx" % size, + )) # Try to fetch the data from the cache - thumbnail = self.memcache.get(cache_key) + thumbnail = await self.backend.cache.get(cache_key) if thumbnail: return thumbnail @@ -575,7 +567,7 @@ class File(misc.Object): thumbnail = util.generate_thumbnail(self.blob, size) # Put it into the cache for forever - self.memcache.set(cache_key, thumbnail) + await self.backend.cache.set(cache_key, thumbnail) return thumbnail diff --git a/src/web/docs.py b/src/web/docs.py index c4b77ba3..41fc6332 100644 --- a/src/web/docs.py +++ b/src/web/docs.py @@ -109,7 +109,7 @@ class FileHandler(base.BaseHandler): def action(self): return self.get_argument("action", None) - def get(self, path): + async def get(self, path): # Check permissions if not self.backend.wiki.check_acl(path, self.current_user): raise tornado.web.HTTPError(403, "Access to %s not allowed for %s" % (path, self.current_user)) @@ -138,7 +138,7 @@ class FileHandler(base.BaseHandler): # Check if image should be resized if size and file.is_bitmap_image(): - blob = file.get_thumbnail(size) + blob = await file.get_thumbnail(size) else: blob = file.blob