コンテンツにスキップ

スクリプト開発 / 簡易ストレージ DFF.STORE

DFF.STORE は小規模な KV データを永続化するために使用され、構造は scope + key -> value です。書き込み時には自動的に JSON シリアライズされ、読み取り時には自動的にデシリアライズされて JSON 型が保持されます。

複雑なクエリや大量のデータには、データベースコネクターを使用してください。短いライフサイクルで高頻度にアクセスされ、文字列化が許容されるデータには DFF.CACHE を使用してください。

共通パラメータ

パラメータ 必須 / デフォルト値 説明
key 必須 キー名、最大 256 文字
value 必須 JSON にシリアライズ可能なオブジェクト
expires None 有効期限の秒数。None は無期限を意味します
scope 現在の Script ID 名前空間、最大 256 文字
pattern "*" キー名のマッチング。* は任意の長さにマッチし、? は 1 文字にマッチします

API

メソッド 戻り値 / 説明
set(key, value, expires=None, not_exists=False, scope=None) 単一の値を書き込み、None を返します
mset(key_values, expires=None, not_exists=False, scope=None) 一括書き込みを行い、None を返します
get(key, scope=None) / DFF.STORE(key, scope=None) 戻り値。存在しないか期限切れの場合は None を返します
mget(keys, scope=None) {key: value} を返します
getall(scope=None) Scope 配下の全データを返します
keys(pattern='*', scope=None) マッチする Key のリストを返します
get_pattern(pattern='*', scope=None) マッチするデータ {key: value} を返します
delete(key, scope=None) 指定した Key を削除します
delete_pattern(pattern='*', scope=None) マッチする Key を削除します
ref(key, scope=None, default=None) 動的な値の取得をサポートする DFF.API パラメータ向けの遅延参照を作成します
1
2
3
4
5
6
7
8
9
DFF.STORE.set('user:user-001', {'name': 'User A'}, scope='users')
user = DFF.STORE.get('user:user-001', scope='users')

DFF.STORE.mset({
    'user:user-002': {'name': 'User B'},
    'user:user-003': {'name': 'User C'},
}, scope='users')

users = DFF.STORE.get_pattern('user:*', scope='users')

mget(...) は、リクエストされた各 Key を含み、存在しないか期限切れの値は None になります。get_pattern(...) は、マッチし、かつ依然として有効なレコードのみを含みます。

not_exists=True を使用する場合、ちょうど期限切れになった Key でも作成を妨げる可能性があります。set(...)mset(...) はどちらも None を返すため、作成結果を確認する必要がある場合は、書き込み後に読み取ってください。一括書き込みは項目ごとに実行され、全か無かのトランザクションではありません。

欠落または falsy な expires は無期限を意味します。その後、有効期限なしで書き込むと、元の有効期限はクリアされます。古いコードでは expire パラメータを使用している可能性がありますが、新しいコードでは expires に統一してください。

動的参照

DFF.STORE.ref(...) は動的参照を返します。これは DFF.APIdelayed_cron_jobtimeoutexpiresqueue パラメータに使用できます。scope を省略すると、参照は現在の Script Scope ではなく、専用の REF Scope を使用します。通常は、書き込み側と一致する Scope を明示的に渡す必要があります。

パターン削除はデフォルトで Scope 全体にマッチします

delete_pattern() のデフォルトパターンは '*' です。Scope 全体を削除する必要が明確にない限り、必ず pattern を明示的に渡し、まず keys(...) でマッチする Key を確認してください。

DFF.STORE を大きなファイルや大規模なリストの長期的な保存に使用しないでください。