aboutsummaryrefslogtreecommitdiff
path: root/internal/cache.py
blob: d5554cd3b4d4e8f7c51f81d367fc685c82e1fe57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import redis
import pickle
import os

REDIS_HOST = os.getenv("REDIS_HOST", "127.0.0.1")
REDIS_PORT = os.getenv("REDIS_PORT", "6379")
REDIS_URL = f"redis://{REDIS_HOST}:{REDIS_PORT}/0"


class Cache:
    def __init__(self, redis_url=REDIS_URL):
        self.client = redis.Redis.from_url(redis_url)

    def set(self, key, value, ex=None):
        pickled = pickle.dumps(value)
        self.client.set(key, pickled, ex=ex)

    def get(self, key):
        data = self.client.get(key)
        if data is not None:
            return pickle.loads(data)
        return None

    def delete(self, key):
        self.client.delete(key)


cache = Cache()