DynamoDb Backend¶
- class cachelib.dynamodb.DynamoDbCache(table_name='python-cache', default_timeout=300, key_field='cache_key', expiration_time_field='expiration_time', key_prefix=None, **kwargs)¶
Bases:
BaseCache
Implementation of cachelib.BaseCache that uses an AWS DynamoDb table as the backend.
Your server process will require dynamodb:GetItem and dynamodb:PutItem IAM permissions on the cache table.
Limitations: DynamoDB table items are limited to 400 KB in size. Since this class stores cached items in a table, the max size of a cache entry will be slightly less than 400 KB, since the cache key and expiration time fields are also part of the item.
- Parameters:
table_name (str | None) – The name of the DynamoDB table to use
default_timeout (int) – Set the timeout in seconds after which cache entries expire
key_field (str | None) – The name of the hash_key attribute in the DynamoDb table. This must be a string attribute.
expiration_time_field (str | None) – The name of the table attribute to store the expiration time in. This will be an int attribute. The timestamp will be stored as seconds past the epoch. If you configure this as the TTL field, then DynamoDB will automatically delete expired entries.
key_prefix (str | None) – A prefix that should be added to all keys.
kwargs (Any) –
- add(key, value, timeout=None)¶
Works like
set()
but does not overwrite the values of already existing keys.- Parameters:
key (str) – the key to set
value (Any) – the value for the key
timeout (int | None) – the cache timeout for the key in seconds (if not specified, it uses the default timeout). A timeout of 0 indicates that the cache never expires.
- Returns:
Same as
set()
, but alsoFalse
for already existing keys.- Return type:
boolean
- clear()¶
Clears the cache. Keep in mind that not all caches support completely clearing the cache.
- Returns:
Whether the cache has been cleared.
- Return type:
boolean
- delete(key)¶
Deletes an item from the cache. This is a no-op if the item doesn’t exist
- Parameters:
key (str) – Key of the item to delete.
- Returns:
True if the key existed and was deleted
- Return type:
bool
- get(key)¶
Get a cache item
- Parameters:
key (str) – The cache key of the item to fetch
- Returns:
cache value if not expired, else None
- Return type:
Any
- has(key)¶
Checks if a key exists in the cache without returning it. This is a cheap operation that bypasses loading the actual data on the backend.
- Parameters:
key (str) – the key to check
- Return type:
bool
- serializer = <cachelib.serializers.DynamoDbSerializer object>¶
- set(key, value, timeout=None)¶
Add a new key/value to the cache (overwrites value, if key already exists in the cache).
- Parameters:
key (str) – the key to set
value (Any) – the value for the key
timeout (int | None) – the cache timeout for the key in seconds (if not specified, it uses the default timeout). A timeout of 0 indicates that the cache never expires.
- Returns:
True
if key has been updated,False
for backend errors. Pickling errors, however, will raise a subclass ofpickle.PickleError
.- Return type:
boolean