API¶
Cache3 is a MIT licensed safe and lightweight cache library, written in pure-Python.
MiniCache¶
- class cache3.MiniCache(name: str, max_size: int = 1073741824, evict_size: int = 16, evict_policy: str = 'lru', thread_safe: bool = True)¶
A simple dictionary-based in-memory cache that supports automatic data elimination and does not support tag.
Cache is built based on minicache, but cache is tag-supported.
- __init__(name: str, max_size: int = 1073741824, evict_size: int = 16, evict_policy: str = 'lru', thread_safe: bool = True) None ¶
- __repr__() str ¶
Return repr(self).
- incr(key: Any, delta: int | float = 1) int | float ¶
Increases the value by delta (default 1)
- inspect(key: Any) Dict[str, Any] | None ¶
inspect the key in cache informations, returns the dict if the key is existed else None
- memoize(timeout: int | float | None = None) Callable[[str | None, int | float | None], Callable] ¶
The cache is decorated with the return value of the function, and the timeout is available.
- ttl(key: Any) int | float | None ¶
returns the key time to live
- Returns:
the key has been expired None : never expired float: life seconds
- Return type:
-1
Cache¶
- class cache3.Cache(name: str, *args, **kwargs)¶
Memory-based cache instance
- __init__(name: str, *args, **kwargs) None ¶
- __repr__() str ¶
Return repr(self).
- memoize(timeout: int | float | None = 86400, tag: str | None = None) Any ¶
The cache is decorated with the return value of the function, and the timeout is available.
DiskCache¶
- class cache3.DiskCache(directory: str = '~/.cache3', name: str = 'default.sqlite3', max_size: int = 1073741824, iter_size: int = 256, evict_policy: str = 'lru', evict_size: int = 64, evict_time: int | float = 2, charset: str | None = None, protocol: int = 5, raw_max_size: int = 131072, isolation: str | None = None, timeout: int | float | None = 600, pragmas: Dict[str, Any] | None = None)¶
Disk cache based on sqlite and file system
- __contains__(key: Any, tag: str | None = None) bool ¶
Return True if the key in cache else False.
- __delitem__(key: Any, tag: str | None = None) bool ¶
- Parameters:
key
tag
Returns:
- __getitem__(key: Any, default: Any | None = None, tag: str | None = None) Any ¶
- Parameters:
key
default
tag
Returns:
- __init__(directory: str = '~/.cache3', name: str = 'default.sqlite3', max_size: int = 1073741824, iter_size: int = 256, evict_policy: str = 'lru', evict_size: int = 64, evict_time: int | float = 2, charset: str | None = None, protocol: int = 5, raw_max_size: int = 131072, isolation: str | None = None, timeout: int | float | None = 600, pragmas: Dict[str, Any] | None = None) None ¶
- __iter__(tag: str | None = <class 'cache3.util.empty'>) Iterable[Tuple[Any, str]] ¶
Returns all keys when tag is specified, otherwise it returns both key and tag
- __repr__() str ¶
Return repr(self).
- __setitem__(key: Any, value: Any, timeout: int | float | None = None, tag: str | None = None) bool ¶
- Parameters:
key
value
timeout
tag
Returns:
- clear() bool ¶
Delete all data and initialize the statistics table.
- delete(key: Any, tag: str | None = None) bool ¶
- Parameters:
key
tag
Returns:
- ex_set(key: Any, value: Any, timeout: int | float | None = None, tag: str | None = None) bool ¶
Write the key-value relationship when the data does not exist in the cache, otherwise the set operation will be cancelled
- get(key: Any, default: Any | None = None, tag: str | None = None) Any ¶
- Parameters:
key
default
tag
Returns:
- get_many(keys: List[Any], tag: str | None = None) Dict[Any, Any] ¶
There is a limitation on obtaining a group of key values.
- TODO WARNING: the tags of this group of key values must be consistent,
but the memory based cache strategy does not have this limitation. This feature will be supported in the future to ensure the consistency of behavior
- has_key(key: Any, tag: str | None = None) bool ¶
Return True if the key in cache else False.
- incr(key: Any, delta: int | float = 1, tag: str | None = None) int | float ¶
Increases the value by delta (default 1)
int, float and (str/bytes) not serialize, so add in sql statement.
The increment operation should be implemented through SQLite, which is not safe at the Python language level
- Parameters:
key – key literal value
delta – Increase in size
- Returns:
The new value
- Raises:
KeyError – if the key does not exist or has been eliminated
TypeError – if value is not a number type
- inspect(key: Any, tag: str | None = None) Dict[str, Any] | None ¶
Get the details of the key value, including any information, access times, recent access time, etc., and even the underlying serialized data
- items(tag: str | None = <class 'cache3.util.empty'>) Iterable[Tuple] ¶
Returns all key-value relationships under the tag namespace in the cache database when tag is specified. Otherwise, all key-value-tags in the database are returned.
Note: that whether tag is specified or not will determine the difference in the return value
- keys(tag: str | None = <class 'cache3.util.empty'>) Iterable[Tuple[Any, str]] ¶
Returns all keys when tag is specified, otherwise it returns both key and tag
- memoize(timeout: int | float | None = 86400, tag: str | None = None) Any ¶
The cache is decorated with the return value of the function, and the timeout is available.
- pop(key: Any, default: Any | None = None, tag: str | None = None) Any ¶
- Parameters:
key
default
tag
Returns:
- set(key: Any, value: Any, timeout: int | float | None = None, tag: str | None = None) bool ¶
- Parameters:
key
value
timeout
tag
Returns:
- touch(key: Any, timeout: int | float | None = None, tag: str | None = None) bool ¶
Renew the key. When the key does not exist, false will be returned
- try_evict(sql) None ¶
try to evict expired data
- ttl(key: Any, tag: str | None = None) int | float | None ¶
- Parameters:
key
tag
Returns:
- values(tag: str | None = <class 'cache3.util.empty'>) Iterable[Tuple] ¶
Returns all values when tag is specified, otherwise it returns both value and tag