Skip to content

Latest commit

 

History

History
107 lines (73 loc) · 2.96 KB

README_jp.md

File metadata and controls

107 lines (73 loc) · 2.96 KB

tiny_storage

pub package

English, 日本語

tiny_storageはJSONファイルをベースとしたシンプルなKey-Valueストアです。 また、とても小さなライブラリなので誰でも動きの把握がしやすくなっています。

Features

  • Key-Valueストア
  • JSONファイルでの出力
  • 早い
    • Isolateを使用しファイルI/Oを並列処理
    • 同一イベントループ内では複数回書き込み処理が走らない
  • 大きなデータであっても書き込み順を保証

Getting started

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();
}

Usage

初期化

保存するファイル名を指定して初期化します。
ファイルが存在する場合は読み込み処理が走ります。
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();

Note

Web版は未実装になっています。

tiny_locator

tiny_storageinitの際にファイル読み込み処理が走るので複数のクラスなどで使用する場合は 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);
}