Skip to main content

A lightweight in-memory caching library with disk persistence. Supports both sync and async functions.

Project description

CacheDisk

CacheDisk is a lightweight, in-memory caching library designed for Python, offering seamless disk persistence. It provides a drop-in optimization for your frequently used sync/async functions, allowing you to cache their results and retrieve them from memory on subsequent calls.

Features

  • Easy-to-use decorators to cache the results of functions, both synchronously and asynchronously.
  • Disk persistence allows your cache to survive across application restarts, enhancing data retrieval times for repeated operations.
  • Flexible storage options with support for JSON and Pickle, choose according to your compatibility or performance needs.
  • Culling functionality to remove infrequently used cache entries, ensuring that your cache does not grow unbounded.
  • Configurable caching parameters allowing fine-tuned performance to match the needs of your application, by avoiding slow-downs caused by disk writes.

Installation

CacheDisk is available on PyPi and can be installed using pip:

pip install cachedisk

Quick Start

Basic Caching Example

Here's a quick example to get you started with CacheDisk:

from cachedisk import CacheDisk, CacheDiskConfig

# Optional: Configure CacheDisk to use JSON for serialization
CacheDiskConfig.use_json = True

@CacheDisk.sync_disk_cache()
def expensive_function(param1):
    # Simulate an expensive or time-consuming operation
    return some_expensive_computation(param1)

# First call will compute and cache the result
result = expensive_function('some_input')

# Subsequent calls with the same input will fetch the result from the cache
cached_result = expensive_function('some_input')

For asynchronous functions, simply use the @CacheDisk.async_disk_cache() decorator in a similar fashion.

Configuring the Cache Directory

By default, CacheDisk uses a directory named cache_data in your current working directory. You can customize the cache directory as follows:

CacheDiskConfig.cache_dir = '/path/to/your/custom/cache/directory'

Committing Cache Changes

To manually trigger saving all pending cache changes to disk:

CacheDisk.commit()

This can be particularly useful before application shutdown or after a batch of operations.

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue if you have feedback, ideas, or code improvements.

License

CacheDisk is licensed under the MIT License. See LICENSE file for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

CacheDisk-0.2.tar.gz (6.3 kB view hashes)

Uploaded Source

Built Distribution

CacheDisk-0.2-py3-none-any.whl (5.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page