Redis#
Redis is an in-memory data store with on-disk persistence. It offers a high-performace cache that scales exceptionally well, making it an ideal choice for larger applications.
Persistence#
Redis operates on data in memory, and by default also persists data to snapshots on disk. This is optimized for performance, with a minor risk of data loss, and is usually the best configuration for a cache. If you need different behavior, the frequency and type of persistence can be customized or disabled entirely. See Redis Persistence for details.
Connection Options#
The Redis backend accepts any keyword arguments for redis.client.Redis
:
>>> backend = RedisCache(host='192.168.1.63', port=6379)
>>> session = CachedSession('http_cache', backend=backend)
API Reference#
Redis cache backend |
|
A dictionary-like interface for Redis operations. |
|
A dictionary-like interface for operations on a single Redis hash |
- class requests_cache.backends.redis.RedisCache(namespace='http_cache', connection=None, **kwargs)[source]#
Bases:
requests_cache.backends.base.BaseCache
Redis cache backend
- Parameters
namespace – Redis namespace
connection (
Optional
[Redis
]) – Redis connection instance to use instead of creating a new onekwargs – Additional keyword arguments for
redis.client.Redis
- bulk_delete(keys)#
Remove multiple responses and their associated redirects from the cache
- clear()#
Delete all items from the cache
- contains(key=None, request=None, url=None)#
Check if the specified request is cached
- Parameters
request (
Union
[Request
,PreparedRequest
,CachedRequest
,None
]) – Check for a matching request, according to current request matching settingsurl (
Optional
[str
]) – Check for a matching GET request with the specified URL
- create_key(request=None, **kwargs)#
Create a normalized cache key from a request object
- Parameters
request (
Union
[Request
,PreparedRequest
,CachedRequest
,None
]) –- Return type
- delete(*keys, expired=False, invalid=False, requests=None, urls=None)#
Remove responses from the cache according one or more conditions.
- Parameters
keys (
str
) – Remove responses with these cache keysexpired (
bool
) – Remove all expired responsesinvalid (
bool
) – Remove all invalid responses (that can’t be deserialized with current settings)requests (
Optional
[Iterable
[Union
[Request
,PreparedRequest
,CachedRequest
]]]) – Remove matching responses, according to current request matching settingsurls (
Optional
[Iterable
[str
]]) – Remove matching GET requests for the specified URL(s)
- filter(valid=True, expired=True, invalid=False)#
Get responses from the cache, with optional filters
- Parameters
- Return type
- get_response(key, default=None)#
Retrieve a response from the cache, if it exists
- Parameters
key (
str
) – Cache key for the responsedefault – Value to return if key is not in the cache
- Return type
- remove_expired_responses(expire_after=None)#
- reset_expiration(expire_after=None)#
Set a new expiration value on existing cache items
- save_response(response, cache_key=None, expires=None)#
Save a response to the cache
- class requests_cache.backends.redis.RedisDict(namespace, collection_name=None, connection=None, **kwargs)[source]#
Bases:
requests_cache.backends.base.BaseStorage
A dictionary-like interface for Redis operations.
- Notes:
All keys will be encoded as bytes, and all values will be serialized
Supports TTL
- bulk_delete(keys)[source]#
Delete multiple keys from the cache, without raising errors for missing keys
- get(k[, d]) D[k] if k in D, else d. d defaults to None. #
- pop(k[, d]) v, remove specified key and return the corresponding value. #
If key is not found, d is returned if given, otherwise KeyError is raised.
- popitem() (k, v), remove and return some (key, value) pair #
as a 2-tuple; but raise KeyError if D is empty.
- property serializer#
- setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D #
- update([E, ]**F) None. Update D from mapping/iterable E and F. #
If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v
- class requests_cache.backends.redis.RedisHashDict(namespace='http_cache', collection_name=None, connection=None, **kwargs)[source]#
Bases:
requests_cache.backends.base.BaseStorage
A dictionary-like interface for operations on a single Redis hash
- Notes:
All keys will be encoded as bytes, and all values will be serialized
Items will be stored in a hash named
namespace:collection_name
- bulk_delete(keys)[source]#
Delete multiple keys from the cache, without raising errors for missing keys
- get(k[, d]) D[k] if k in D, else d. d defaults to None. #
- pop(k[, d]) v, remove specified key and return the corresponding value. #
If key is not found, d is returned if given, otherwise KeyError is raised.
- popitem() (k, v), remove and return some (key, value) pair #
as a 2-tuple; but raise KeyError if D is empty.
- property serializer#
- setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D #
- update([E, ]**F) None. Update D from mapping/iterable E and F. #
If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v