Pengembangan Skrip / Penyimpanan Sederhana DFF.STORE
DFF.STORE digunakan untuk menyimpan data KV skala kecil secara persisten, dengan struktur scope + key -> value. Saat menulis, data akan otomatis diserialisasi ke JSON; saat membaca, data otomatis dideserialisasi dan mempertahankan tipe JSON.
Kueri kompleks atau data dalam jumlah besar sebaiknya menggunakan Konektor basis data. Data yang berumur pendek, sering diakses, dan dapat diterima dalam bentuk string sebaiknya menggunakan DFF.CACHE.
Parameter Umum
| Parameter | Wajib / Nilai default | Keterangan |
|---|---|---|
key |
Wajib | Nama kunci, maksimal 256 karakter |
value |
Wajib | Objek yang dapat diserialisasi JSON |
expires |
None |
Jumlah detik kedaluwarsa; None berarti tidak pernah kedaluwarsa |
scope |
ID Script saat ini | Ruang nama, maksimal 256 karakter |
pattern |
"*" |
Pencocokan nama kunci; * mencocokkan panjang berapa pun, ? mencocokkan satu karakter |
API
| Metode | Nilai kembali / Keterangan |
|---|---|
set(key, value, expires=None, not_exists=False, scope=None) |
Menulis satu nilai, mengembalikan None |
mset(key_values, expires=None, not_exists=False, scope=None) |
Menulis sekaligus (batch), mengembalikan None |
get(key, scope=None) / DFF.STORE(key, scope=None) |
Mengembalikan nilai; mengembalikan None jika tidak ada atau sudah kedaluwarsa |
mget(keys, scope=None) |
Mengembalikan {key: value} |
getall(scope=None) |
Mengembalikan semua data di bawah Scope |
keys(pattern='*', scope=None) |
Mengembalikan daftar Key yang cocok |
get_pattern(pattern='*', scope=None) |
Mengembalikan data yang cocok {key: value} |
delete(key, scope=None) |
Menghapus Key yang ditentukan |
delete_pattern(pattern='*', scope=None) |
Menghapus Key yang cocok |
ref(key, scope=None, default=None) |
Membuat referensi tertunda untuk parameter DFF.API yang mendukung nilai dinamis |
| Contoh | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
mget(...) akan menyertakan Key dari setiap permintaan; nilai yang hilang atau sudah kedaluwarsa adalah None; get_pattern(...) hanya menyertakan rekaman yang cocok dan masih valid.
Saat menggunakan not_exists=True, Key yang baru saja kedaluwarsa masih dapat menghalangi pembuatan. set(...) dan mset(...) sama-sama mengembalikan None; untuk memastikan hasil pembuatan, lakukan pembacaan setelah penulisan. Penulisan batch dieksekusi item per item, bukan transaksi all-or-nothing.
Nilai expires yang hilang atau falsy berarti tidak kedaluwarsa; penulisan berikutnya tanpa waktu kedaluwarsa akan menghapus waktu kedaluwarsa sebelumnya. Kode lama mungkin menggunakan parameter expire; kode baru sebaiknya konsisten menggunakan expires.
Referensi Dinamis
DFF.STORE.ref(...) mengembalikan referensi dinamis yang dapat digunakan untuk parameter delayed_cron_job, timeout, expires, dan queue pada DFF.API. Jika scope dihilangkan, referensi menggunakan Scope REF khusus, bukan Scope Script saat ini; biasanya Anda harus secara eksplisit meneruskan Scope yang sama dengan penulisnya.
Penghapusan pola secara default akan mencocokkan seluruh Scope
Pola default delete_pattern() adalah '*'. Kecuali Anda benar-benar perlu menghapus seluruh Scope, Anda harus secara eksplisit meneruskan pattern, dan terlebih dahulu melihat Key yang cocok melalui keys(...).
Jangan gunakan DFF.STORE untuk menyimpan file besar atau daftar besar dalam jangka panjang.