Skip to content

Примеры

Синхронный режим с кастомным TTL

from redis import Redis
from simple_redis_cache.sync import Cache

redis = Redis()
cache = Cache(redis)

@cache.cache(ttl=3600, prefix="product")
def get_product(product_id: int):
    return {"id": product_id, "name": "Laptop", "price": 999.99}

print(get_product(1))  # 1 час в кэше

Асинхронный режим с инвалидацией

import asyncio
from redis.asyncio import Redis
from simple_redis_cache.asyncio import Cache

redis = Redis()
cache = Cache(redis)

@cache.cache(ttl=60, prefix="user")
async def get_user(user_id: int):
    return {"id": user_id, "name": "Alice"}

async def main():
    print(await get_user(1))          # Из БД
    print(await get_user(1))          # Из кэша

    await cache.invalidate_cache(prefix="user")  # Очистка

    print(await get_user(1))          # Снова из БД

asyncio.run(main())

Инвалидация нескольких префиксов

from redis import Redis
from simple_redis_cache.sync import Cache

redis = Redis()
cache = Cache(redis)

@cache.cache(ttl=60, prefix="user")
def get_user(user_id: int):
    return {"id": user_id, "name": "Alice"}

@cache.cache(ttl=60, prefix="post")
def get_post(post_id: int):
    return {"id": post_id, "title": "Hello"}

get_user(1)
get_post(1)

cache.invalidate_cache(prefix="user")  # Удалит только кэш пользователей
cache.invalidate_cache(prefix="post")  # Удалит только кэш постов

Использование кастомного логгера

import logging
from redis import Redis
from simple_redis_cache.sync import Cache

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger("my_app")

redis = Redis()
cache = Cache(redis, logger=logger)

@cache.cache(ttl=60, prefix="user")
def get_user(user_id: int):
    return {"id": user_id, "name": "Alice"}

get_user(1)  # Логи будут выводиться через твой логгер