slipstream.caching¶
Slipstream caching.
Attributes¶
Classes¶
Create a RocksDB database in the specified folder. |
Module Contents¶
- class slipstream.caching.Cache(path: str, options: rocksdict.Options | None = None, column_families: dict[str, rocksdict.Options] | None = None, access_type: rocksdict.AccessType | None = None, target_table_size: int = 25 * MB, number_of_locks: int = 16)[source]¶
Bases:
slipstream.interfaces.ICacheCreate a RocksDB database in the specified folder.
>>> cache = Cache('db/mycache')
The cache instance acts as a callable to store data:
>>> cache('key', {'msg': 'Hello World!'}) >>> cache['key'] {'msg': 'Hello World!'}
- async transaction(key: slipstream.interfaces.Key) collections.abc.AsyncGenerator[Cache, None][source]¶
Lock the db entry while using the context manager.
>>> async with cache.transaction('fish'): ... cache['fish'] = '🐟'
This works for asynchronous code (not multi-threading/processing)
While locked, other transactions on the same key will block
Actions outside of transaction blocks ignore ongoing transactions
Reads aren’t limited by ongoing transactions
- put(key: slipstream.interfaces.Key, value: Any, write_opt: rocksdict.WriteOptions | None = None) None[source]¶
Put item in database using key.
- get(key: slipstream.interfaces.Key | list[slipstream.interfaces.Key], default: T = None, read_opt: rocksdict.ReadOptions | None = None) Any | T[source]¶
Get item from database by key.
- put_entity(key: slipstream.interfaces.Key, names: list[Any], values: list[Any], write_opt: rocksdict.WriteOptions | None = None) None[source]¶
Put wide-column in database using key.
>>> cache.put_entity('key', ['a', 'b'], [1, 2])
- get_entity(key: slipstream.interfaces.Key | list[slipstream.interfaces.Key], default: Any = None, read_opt: rocksdict.ReadOptions | None = None) list[tuple[Any, Any]] | None[source]¶
Get wide-column from database by key.
>>> cache.get_entity('key') [('a', 1), ('b', 2)]
- delete(key: slipstream.interfaces.Key, write_opt: rocksdict.WriteOptions | None = None) None[source]¶
Delete item from database.
- key_may_exist(key: slipstream.interfaces.Key, fetch: bool = False, read_opt: rocksdict.ReadOptions | None = None) bool | tuple[bool, Any][source]¶
Check if a key exist without performing IO operations.
- items(backwards: bool = False, from_key: slipstream.interfaces.Key | None = None, read_opt: rocksdict.ReadOptions | None = None, prefix: slipstream.interfaces.Key | None = None) collections.abc.Iterator[tuple[slipstream.interfaces.Key, Any]][source]¶
Get tuples of key-value pairs.
- keys(backwards: bool = False, from_key: slipstream.interfaces.Key | None = None, read_opt: rocksdict.ReadOptions | None = None, prefix: slipstream.interfaces.Key | None = None) collections.abc.Iterator[slipstream.interfaces.Key][source]¶
Get keys.
- values(backwards: bool = False, from_key: slipstream.interfaces.Key | None = None, read_opt: rocksdict.ReadOptions | None = None, prefix: slipstream.interfaces.Key | None = None) collections.abc.Iterator[Any][source]¶
Get values.
- columns(backwards: bool = False, from_key: slipstream.interfaces.Key | None = None, read_opt: rocksdict.ReadOptions | None = None, prefix: slipstream.interfaces.Key | None = None) collections.abc.Iterator[list[tuple[Any, Any]]][source]¶
Get values as widecolumns.
- entities(backwards: bool = False, from_key: slipstream.interfaces.Key | None = None, read_opt: rocksdict.ReadOptions | None = None, prefix: slipstream.interfaces.Key | None = None) collections.abc.Iterator[tuple[slipstream.interfaces.Key, list[tuple[Any, Any]]]][source]¶
Get keys and entities.
- ingest_external_file(paths: list[str], opts: rocksdict.IngestExternalFileOptions | None = None) None[source]¶
Load list of SST files into current column family.
- get_column_family_handle(name: str) rocksdict.ColumnFamily[source]¶
Get column family handle by name.
- create_column_family(name: str, options: rocksdict.Options | None = None) rocksdict.Rdict[source]¶
Craete column family.
- delete_range(begin: slipstream.interfaces.Key, end: slipstream.interfaces.Key, write_opt: rocksdict.WriteOptions | None = None) None[source]¶
Delete database items, excluding end.
- property_int_value(name: str) int | None[source]¶
Get property as int by name from current column family.
- list_cf(path: str, options: rocksdict.Options | None = None) list[str][source]¶
List column families.
- live_files() list[dict[str, Any]][source]¶
Get list of all table files with their level, start/end key.
- compact_range(begin: slipstream.interfaces.Key | None, end: slipstream.interfaces.Key | None, compact_opt: rocksdict.CompactOptions | None = None) None[source]¶
Run manual compaction on range for the current column family.