node-red - 在文件系统中存储上下文数据
存储在 context、flow 和 glbal 变量中的数据称为上下文数据,node-red的上下文数据通常存储在内存中。这意味着如果您重新启动流程,数据将丢失。
然而,从 0.19 版本开始,node-red支持将上下文数据存储在文件系统中。详细介绍设置过程如下:
一、前期准备
需要安装node.js和node-red:
- win10环境安装:
- linux环境安装:
二、设置 - 将上下文数据存储在文件系统中
- 查看node-red的目录,不知道目录在哪的话可以通过启动时控制台打印的信息查看:
- 修改配置文件settings.js:
vi /安装目录/.node-red/settings.js
#示例
vi /root/.node-red/settings.js
在node-red的配置文件中有一段被注释掉的条目是设置上下文文件存储的,默认是注释掉的,只要给它解注就行:
3. 重启node-red服务:
pm2 restart node-red
# 或者
node-red
所以如果你使用:var count=global.get("count");
将从内存中检索计数变量并从文件存储中获取计数变量使用:global.get("count", "file");
存储数据使用:global.set("count", count,"file");
系统将变量存储在.node-red文件夹下名为context的文件夹中的 JSON 文件中。
- 需要注意的是:即使您将数据存储在文件系统中,仍然可能丢失数据,因为数据默认仅每 30 秒刷新一次到文件系统。
您可以更改此设置(并非真正需要),其他配置选项请参阅此处的文档。
三、全局变量 - 注意异步操作和并发问题
需要注意的是,由于全局变量是在整个工作流中共享的,因此需要谨慎使用。如果在设置全局变量时没有考虑并发性问题,可能会导致数据竞争和其他问题。因此,在使用全局变量时,需要特别小心,并确保正确地处理异步操作和并发性问题。