tiny_storage
はJSONファイルをベースとしたシンプルなKey-Valueストアです。
また、とても小さなライブラリなので誰でも動きの把握がしやすくなっています。
- Key-Valueストア
- JSONファイルでの出力
- 早い
Isolate
を使用しファイルI/Oを並列処理- 同一イベントループ内では複数回書き込み処理が走らない
- 大きなデータであっても書き込み順を保証
import 'package:tiny_storage/tiny_storage.dart';
void main() async {
final storage = await TinyStorage.init('test.txt', path: './tmp');
storage.set('key_1', 'value_1');
storage.set('key_2', 2);
storage.set('key_3', [1, 2, 3]);
final ret = storage.get('key_1');
print(ret);
await storage.dispose();
}
保存するファイル名を指定して初期化します。
ファイルが存在する場合は読み込み処理が走ります。
Flutterの場合はpath_providerなどを使用して保存先パスの指定も必要になります。
final storage = await TinyStorage.init('test.txt', path: './tmp');
複数ファイルを開く際にスレッドを増やしたくない場合は、union
に共通化するTinyStorageオブジェクトを指定してください。同一スレッドで動作するようになります。
final storage = await TinyStorage.init('test1.txt', path: './tmp');
final storage2 = await TinyStorage.init('test2.txt', path: './tmp', union: storage);
StringをキーにObjectの登録・取得を行います。
値は即座にメモリ上に保持され、イベントループの最後にディスクへ書き込まれます。
storage.set('key_1', 'value_1');
final ret = storage.get('key_1');
全てのデータとファイルを破棄します。
storage.clear();
不必要になったらdispose
で破棄するようにしてください。
storage.dispose();
Web版は未実装になっています。
tiny_storage
はinit
の際にファイル読み込み処理が走るので複数のクラスなどで使用する場合は
tiny_locatorなどを利用しインスタンスを共有する事をお勧めします。
Future<void> A() async {
// 登録
final storage = await TinyStorage.init('test.txt', path: './tmp');
locator.add<TinyStorage>(() => storage);
}
void B() {
// 取得
final storage = locator.get<TinyStorage>();
final ret = storage.get('key_1');
print(ret);
}