跳轉到

指令碼開發 / 簡易儲存 DFF.STORE

DataFlux Func 內建了簡易的持久化儲存功能 DFF.STORE。 對於一些有資料儲存需求,同時需求並不複雜的場景,可以直接使用本內建儲存功能。

儲存功能為 Scope-Key-Value 結構,不同名稱空間下,允許存在相同的 Key。

簡易儲存會保持原始資料型別

在操作簡易儲存時,寫入的資料會自動序列化;讀取時也會自動反序列化

因此,使用時無需手工做序列化處理

DFF.STORE.set(...)

儲存資料,引數如下:

引數 型別 必須 / 預設值 說明
key str 必須 鍵名
value 任意可 JSON 序列化物件 必須 資料
expires / expire int None 過期時間。
單位:秒
None 表示永不過期
not_exists bool False 是否僅在資料不存在時寫入
scope str 當前指令碼名 名稱空間
示例
1
DFF.STORE.set('user:user-001', { 'name': 'User A' }, scope='users')

DFF.STORE.mset(...)

於 6.0.6 版本新增

批次儲存資料,引數如下:

引數 型別 必須 / 預設值 說明
key_values dict 必須 鍵名-資料字典
expires / expire int None 過期時間。
單位:秒
None 表示永不過期
not_exists bool False 是否僅在資料不存在時寫入
scope str 當前指令碼名 名稱空間
示例
1
2
3
4
5
data = {
  'user:user-001': { 'name': 'User A' },
  'user:user-002': { 'name': 'User B' }
}
DFF.STORE.mset(data, scope='users')

DFF.STORE.keys(...)

獲取 Key 列表,引數如下:

引數 型別 必須 / 預設值 說明
pattern str "*" 鍵名匹配模式
支援 * 萬用字元
scope str 當前指令碼名 名稱空間
示例
1
2
3
4
DFF.STORE.set('user:user-001', { 'name': 'User A' }, scope='users')
DFF.STORE.set('user:user-002', { 'name': 'User B' }, scope='users')
DFF.STORE.keys('user:user-*')
# ['user:user-001', 'user:user-002']

DFF.STORE.get(...)

獲取儲存的資料,引數如下:

引數 型別 必須 / 預設值 說明
key str 必須 鍵名
scope str 當前指令碼名 名稱空間
示例
1
2
3
DFF.STORE.set('user:user-001', { 'name': 'User A' }, scope='users')
DFF.STORE.get('user:user-001', scope='users')
# {'name': 'User A'}

DFF.STORE.mget(...)

於 6.0.6 版本新增

批次獲取儲存的資料,引數如下:

引數 型別 必須 / 預設值 說明
keys list 必須 鍵名列表
scope str 當前指令碼名 名稱空間
示例
1
2
3
4
5
DFF.STORE.set('user:user-001', { 'name': 'User A' }, scope='users')
DFF.STORE.set('user:user-002', { 'name': 'User B' }, scope='users')

DFF.STORE.mget([ 'user:user-001', 'user:user-002' ], scope='users')
# {'user:user-001': {'name': 'User A'}, 'user:user-002': {'name': 'User B'}}

DFF.STORE.getall(...)

於 6.0.6 版本新增

獲取全部儲存的資料,引數如下:

引數 型別 必須 / 預設值 說明
scope str 當前指令碼名 名稱空間
示例
1
2
3
4
5
DFF.STORE.set('user:user-001', { 'name': 'User A' }, scope='users')
DFF.STORE.set('user:user-002', { 'name': 'User B' }, scope='users')

DFF.STORE.getall(scope='users')
# {'user:user-001': {'name': 'User A'}, 'user:user-002': {'name': 'User B'}}

DFF.STORE.get_pattern(...)

於 6.0.6 版本新增

根據鍵名匹配模式獲取儲存的資料,引數如下:

引數 型別 必須 / 預設值 說明
pattern str "*" 鍵名匹配模式
支援 * 萬用字元
scope str 當前指令碼名 名稱空間
示例
1
2
3
4
5
DFF.STORE.set('user:user-001', { 'name': 'User A' }, scope='users')
DFF.STORE.set('user:user-002', { 'name': 'User B' }, scope='users')

DFF.STORE.get_pattern('*-001', scope='users')
# {'user:user-001': {'name': 'User A'}}

DFF.STORE.delete(...)

刪除儲存的資料,引數如下:

引數 型別 必須 / 預設值 說明
key str 必須 鍵名
scope str 當前指令碼名 名稱空間
示例
1
DFF.STORE.delete('user:user-001', scope='users')

DFF.STORE.delete_pattern(...)

於 6.0.6 版本新增

根據鍵名匹配模式刪除儲存的資料,引數如下:

引數 型別 必須 / 預設值 說明
pattern str "*" 鍵名匹配模式
支援 * 萬用字元
scope str 當前指令碼名 名稱空間
示例
1
2
3
4
DFF.STORE.set('user:user-001', { 'name': 'User A' }, scope='users')
DFF.STORE.set('user:user-002', { 'name': 'User B' }, scope='users')

DFF.STORE.delete_pattern('*:user-001', scope='users')