跳转至

脚本开发 / 简易存储 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': '张三' }, 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:user-002': { 'name': '李四' }
}
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': '张三' }, scope='users')
DFF.STORE.set('user:user-002', { 'name': '李四' }, 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': '张三' }, scope='users')
DFF.STORE.get('user:user-001', scope='users')
# {'name': '张三'}

DFF.STORE.mget(...)

于 6.0.6 版本新增

批量获取存储的数据,参数如下:

参数 类型 必须 / 默认值 说明
keys list 必须 键名列表
scope str 当前脚本名 命名空间
示例
1
2
3
4
5
DFF.STORE.set('user:user-001', { 'name': '张三' }, scope='users')
DFF.STORE.set('user:user-002', { 'name': '李四' }, scope='users')

DFF.STORE.mget([ 'user:user-001', 'user:user-002' ], scope='users')
# {'user:user-001': {'name': '张三'}, 'user:user-002': {'name': '李四'}}

DFF.STORE.getall(...)

于 6.0.6 版本新增

获取全部存储的数据,参数如下:

参数 类型 必须 / 默认值 说明
scope str 当前脚本名 命名空间
示例
1
2
3
4
5
DFF.STORE.set('user:user-001', { 'name': '张三' }, scope='users')
DFF.STORE.set('user:user-002', { 'name': '李四' }, scope='users')

DFF.STORE.getall(scope='users')
# {'user:user-001': {'name': '张三'}, 'user:user-002': {'name': '李四'}}

DFF.STORE.get_pattern(...)

于 6.0.6 版本新增

根据键名匹配模式获取存储的数据,参数如下:

参数 类型 必须 / 默认值 说明
pattern str "*" 键名匹配模式
支持 * 通配符
scope str 当前脚本名 命名空间
示例
1
2
3
4
5
DFF.STORE.set('user:user-001', { 'name': '张三' }, scope='users')
DFF.STORE.set('user:user-002', { 'name': '李四' }, scope='users')

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

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': '张三' }, scope='users')
DFF.STORE.set('user:user-002', { 'name': '李四' }, scope='users')

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