跳轉至

腳本開發 / 簡易存儲 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')