first commit

This commit is contained in:
long2ice
2020-08-26 18:04:57 +08:00
commit c20bb73f27
20 changed files with 1484 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
import abc
from typing import Tuple
class Backend:
@abc.abstractmethod
async def get_with_ttl(self, key: str) -> Tuple[int, str]:
raise NotImplementedError
@abc.abstractmethod
async def get(self, key: str) -> str:
raise NotImplementedError
@abc.abstractmethod
async def set(self, key: str, value: str, expire: int = None):
raise NotImplementedError

View File

@@ -0,0 +1,19 @@
from typing import Tuple
from aiomcache import Client
from fastapi_cache.backends import Backend
class MemcacheBackend(Backend):
def __init__(self, mcache: Client):
self.mcache = mcache
async def get_with_ttl(self, key: str) -> Tuple[int, str]:
return 0, await self.mcache.get(key.encode())
async def get(self, key: str):
return await self.mcache.get(key, key.encode())
async def set(self, key: str, value: str, expire: int = None):
return await self.mcache.set(key.encode(), value.encode(), exptime=expire)

View File

@@ -0,0 +1,22 @@
from typing import Tuple
from aioredis import Redis
from fastapi_cache.backends import Backend
class RedisBackend(Backend):
def __init__(self, redis: Redis):
self.redis = redis
async def get_with_ttl(self, key: str) -> Tuple[int, str]:
p = self.redis.pipeline()
p.ttl(key)
p.get(key)
return await p.execute()
async def get(self, key) -> str:
return await self.redis.get(key)
async def set(self, key: str, value: str, expire: int = None):
return await self.redis.set(key, value, expire=expire)