{"library":"python-redis-cache","title":"Python Redis Cache","description":"python-redis-cache is a Python library providing a simple decorator for Redis-based caching of function results. It integrates with `redis-py` to store and retrieve data, offering features like TTL (Time To Live) and cache limits. The library is actively maintained, with frequent releases addressing bug fixes, new features, and occasional breaking changes to improve functionality.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install python-redis-cache"],"cli":null},"imports":["from redis_cache import RedisCache"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport redis\nfrom redis_cache import RedisCache\nimport time\n\n# Ensure Redis server is running (e.g., docker run --name some-redis -p 6379:6379 -d redis)\n# Get Redis connection details from environment variables, or use defaults\nREDIS_HOST = os.environ.get('REDIS_HOST', 'localhost')\nREDIS_PORT = int(os.environ.get('REDIS_PORT', '6379'))\nREDIS_DB = int(os.environ.get('REDIS_DB', '0'))\n\ntry:\n    # Connect to Redis. decode_responses=True is often useful.\n    redis_client = redis.StrictRedis(\n        host=REDIS_HOST,\n        port=REDIS_PORT,\n        db=REDIS_DB,\n        decode_responses=True\n    )\n    redis_client.ping() # Test connection\n    print(f\"Successfully connected to Redis at {REDIS_HOST}:{REDIS_PORT}/{REDIS_DB}\")\n\n    # Initialize RedisCache with the Redis client and a TTL (Time To Live)\n    cache = RedisCache(redis_client=redis_client, ttl=30) # Cache entries for 30 seconds\n\n    @cache\n    def get_user_data(user_id: int):\n        \"\"\"Simulates fetching user data from a slow external source.\"\"\"\n        print(f\"Fetching user {user_id} from original source...\")\n        time.sleep(1) # Simulate network delay\n        return {\"id\": user_id, \"name\": f\"User {user_id}\", \"fetch_time\": time.time()}\n\n    print(\"\\n--- First call (should fetch from source) ---\")\n    user_data1 = get_user_data(101)\n    print(f\"User Data 1: {user_data1}\")\n\n    print(\"\\n--- Second call (should be served from cache) ---\")\n    user_data2 = get_user_data(101)\n    print(f\"User Data 2: {user_data2}\") # fetch_time should be the same as user_data1\n\n    print(\"\\n--- Third call (different user, fetches from source) ---\")\n    user_data3 = get_user_data(102)\n    print(f\"User Data 3: {user_data3}\")\n\n    print(\"\\n--- Invalidate cache for user 101 and re-fetch ---\")\n    cache.delete_memoized(get_user_data, 101) # Invalidate specific cache entry\n    user_data4 = get_user_data(101) # Should fetch from source again\n    print(f\"User Data 4: {user_data4}\")\n\nexcept redis.exceptions.ConnectionError as e:\n    print(f\"ERROR: Could not connect to Redis at {REDIS_HOST}:{REDIS_PORT}. \"\n          \"Please ensure Redis server is running. Quickstart cannot proceed.\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates how to initialize `RedisCache` with a `redis-py` client and use the `@cache` decorator on a function. It shows how the cache stores results for subsequent calls with the same arguments, and how to manually invalidate a specific cache entry. Ensure a Redis server is accessible at the specified host and port (or defaults).","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"4.0.2","pypi_latest":"4.0.2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.9,"avg_import_s":0.03,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"python-redis-cache","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.02,"mem_mb":1.1,"disk_size":"21.7M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"python-redis-cache","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.01,"mem_mb":1.1,"disk_size":"22M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"python-redis-cache","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"24.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"python-redis-cache","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.03,"mem_mb":1.3,"disk_size":"25M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"python-redis-cache","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.2,"disk_size":"15.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"python-redis-cache","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.04,"mem_mb":1.2,"disk_size":"16M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"python-redis-cache","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.9,"disk_size":"15.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"python-redis-cache","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.05,"mem_mb":1.7,"disk_size":"16M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"python-redis-cache","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.02,"mem_mb":1.1,"disk_size":"20.5M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"python-redis-cache","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.01,"mem_mb":1.1,"disk_size":"21M"}]}}