PgCache
and AsyncPgCache
are cache management classes for PostgreSQL databases. PgCache
provides synchronous
operations, while AsyncPgCache
offers asynchronous operations. They allow you to cache data in a PostgreSQL database
and provide functionalities to set, get, delete, and import/export cache entries.
Before using these classes, ensure you have the following Python packages installed:
pip install -r requirements.txt
or pip install pg-cache
from pg_cache import PgCache
db_url = "postgresql://user:password@localhost/dbname"
table_name = "cache_table"
cache = PgCache(db_url, table_name)
cache.init_db()
cache.set("my_key", "my_value", expire_after_seconds=3600)
entries
= [
{"key": "key1", "value": "value1"},
{"key": "key2", "value": "value2"}
]
cache.set_bulk(entries, expire_after_seconds=3600)
value = cache.get("my_key")
cache.delete("my_key")
keys = ["key1", "key2"]
cache.delete_bulk(keys)
cache.flushdb()
cache.export_to_file("cache_backup.json")
cache.import_from_file("cache_backup.json")
import asyncio
from your_module import AsyncPgCache
db_url = "postgresql+asyncpg://user:password@localhost/dbname"
table_name = "cache_table"
cache = AsyncPgCache(db_url, table_name)
async def init():
await cache.init_db()
asyncio.run(init())
async def set_cache():
await cache.set("my_key", "my_value", expire_after_seconds=3600)
asyncio.run(set_cache())
entries = [
{"key": "key1", "value": "value1"},
{"key": "key2", "value": "value2"}
]
async def set_bulk_cache():
await cache.set_bulk(entries, expire_after_seconds=3600)
asyncio.run(set_bulk_cache())
async def get_cache():
value = await cache.get("my_key")
print(value)
asyncio.run(get_cache())
async def delete_cache():
await cache.delete("my_key")
asyncio.run(delete_cache())
keys = ["key1", "key2"]
async def delete_bulk_cache():
await cache.delete_bulk(keys)
asyncio.run(delete_bulk_cache())
async def flush_cache():
await cache.flushdb()
asyncio.run(flush_cache())
async def export_cache():
await cache.export_to_file("cache_backup.json")
asyncio.run(export_cache())
async def import_cache():
await cache.import_from_file("cache_backup.json")
asyncio.run(import_cache())
You can control the logging level by setting the log_level
parameter when initializing PgCache
or AsyncPgCache
.
For example:
cache = PgCache(db_url, table_name, log_level=logging.INFO)
PgCache
and AsyncPgCache
provide powerful cache management functionalities suitable for applications that need to
cache data in a PostgreSQL database. With both synchronous and asynchronous implementations, you can choose the
appropriate method based on your needs.