跳转到主要内容

未提供项目描述

项目描述

yapcache

PyPI - Version PyPI - Python Version

另一个Python缓存库。

目录

安装

pip install yapcache

使用

内存缓存

import asyncio
from yapcache import memoize
from yapcache.caches.memory import InMemoryCache

cache = InMemoryCache(maxsize=1_000, key_prefix=f"example:")


@memoize(cache, ttl=60, cache_key=lambda n: f"slow-{n}")
async def slow_fn(n: int):
    await asyncio.sleep(n)


async def example():
    await slow_fn(3)
    await slow_fn(3)  # cached!


asyncio.run(example())

Redis缓存

# ...
from redis.asyncio.client import Redis
from yapcache.caches.redis import RedisCache


redis_client = Redis()
cache = RedisCache(redis_client, key_prefix=f"example:")

多层缓存

# ...
from yapcache.caches import MultiLayerCache

redis_client = Redis()

cache = MultiLayerCache(
    [InMemoryCache(maxsize=2_000), RedisCache(redis_client)],
    key_prefix=f"example:",
)

使用lock参数来防止暴风骤雨效应(只有一个协程/线程将执行工作并更新缓存)

# ...
from yapcache.distlock import RedisDistLock

@memoize(
    cache,
    ttl=60,
    cache_key=lambda n: f"slow-{n}",
    lock=lambda key: RedisDistLock(redis_client, key),
)
async def slow_fn(n: int):
    # ...

使用best_before来提供陈旧数据(在后台更新缓存)

@memoize(
    cache,
    ttl=60,
    cache_key=lambda n: f"slow-{n}",
    best_before=lambda n: time.time() + 30
)
async def slow_fn(n: int):
    # ...

许可证

yapcache在MIT许可证的条款下分发。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分布

yapcache-0.1.3.tar.gz (6.2 kB 查看散列)

上传于 源代码

构建分发版

yapcache-0.1.3-py3-none-any.whl (7.8 kB 查看哈希值)

上传于 Python 3

由...