数据缓存基础知识
持久性提供了一种在服务器实例上运行的 MATLAB® 代码调用之间缓存数据的机制。持久性服务独立于服务器实例运行,可以手动启动和停止。连接名称将服务器实例链接到持久性服务。持久性服务使用持久性提供程序来存储数据。目前,仅支持将 Redis™ 用作持久性提供程序。连接名称在 MATLAB 应用程序代码中用于在链接的持久性服务中创建数据缓存。
数据缓存的典型工作流
步骤 | 命令行 | 仪表板 |
---|---|---|
1.创建文件 mps_cache_config | 手动创建一个 JSON 文件并将其放在服务器实例的 config 文件夹中。文件名中不要包含 .json 扩展名。 | 自动创建。 |
2.启动持久服务 | 使用 为了测试目的,您可以使用 |
|
3.创建数据缓存 | 使用 mps.cache.connect (MATLAB Compiler SDK) 创建数据缓存。 | 使用 mps.cache.connect (MATLAB Compiler SDK) 创建数据缓存。 |
配置服务器以使用 Redis
创建 Redis 配置文件
从系统命令提示符启动本地服务器实例的持久性服务之前,必须创建一个名为 mps_cache_config
(无 .json
扩展名)的 JSON 文件并将其放在服务器实例的 config
文件夹中。如果您使用仪表板管理本地服务器实例和云上的服务器部署,则在创建服务器时会自动创建 mps_cache_config
文件。
mps_cache_config
{ "Connections": { "<connection_name>": { "Provider": "Redis", "Host": "<hostname>", "Port": <port_number>, "Key": <access_key> } } } |
指定 JSON 文件中的 <connection_name>
、<hostname>
和 <port_number>
。主机名可以是 localhost
,也可以是从 Azure® Redis 缓存资源获取的远程主机名。如果您使用 Azure 对 Redis 进行缓存,则必须指定访问密钥。要使用 Azure Redis 缓存,您需要一个 Microsoft® Azure 帐户。
您可以在文件 mps_cache_config
中指定多个连接。每个连接必须具有唯一的名称和唯一的(主机,端口)对。如果您通过仪表板使用持久性服务,则会自动在服务器实例的 config
文件夹中创建文件 mps_cache_config
。
为在 Windows 上运行的服务器实例安装 WSL
如果您的 MATLAB Production Server™ 实例在 Windows® 计算机上运行,则需要额外的配置。在 Linux® 和 macOS 上运行的服务器实例不需要以下配置。
您需要安装 Windows Subsystem for Linux (WSL)。有关安装 WSL 的详细信息,请参阅 Microsoft 文档。
如果 MATLAB Production Server 软件安装在网络驱动器上,则必须在 WSL 中挂载网络驱动器。
应该为将运行 MATLAB Production Server 的 Windows 用户帐户安装 WSL。
示例:使用数据缓存增加计数器
此示例向您展示如何使用持久性通过数据缓存来增加计数器。该示例介绍了两个工作流:使用 MATLAB 的测试工作流和需要活动服务器实例的部署工作流。
在 MATLAB Compiler SDK 中测试工作流
创建使用 Redis 作为持久性提供程序的持久性服务并启动该服务。
ctrl = mps.cache.control('myRedisConnection','Redis','Port',4519) start(ctrl)
编写 MATLAB 代码来创建缓存,然后使用该缓存更新计数器。将文件命名为
myCounter.m
。测试计数器。
for i = 1:5 y(i) = myCounter('myCache','myRedisConnection'); end y
y = 0 1 2 3 4
使用 MATLAB Production Server 的部署工作流
在将使用持久性的代码部署到服务器实例之前,请启动持久性服务并将其附加到服务器实例。您可以使用 mps-cache
从系统命令行启动持久性服务,或者按照仪表板中的步骤进行操作。此示例假定您的服务器实例使用默认主机和端口:localhost:9910
。
使用 Production Server Compiler 或
mcc
打包文件myCounter.m
。将存档(
myCounter.ctf
文件)部署到服务器。测试计数器。您可以从 MATLAB 桌面使用 用于 MATLAB 函数执行的 RESTful API 调用服务器。
rhs = {['myCache'],['myRedisConnection']}; body = mps.json.encoderequest(rhs,'Nargout',1); options = weboptions; options.ContentType = 'text'; options.MediaType = 'application/json'; options.Timeout = 30; for i = 1:5 response = webwrite('http://localhost:9910/myCounter/myCounter', body, options); x(i) = mps.json.decoderesponse(response); end x = [x{:}]
x = 0 1 2 3 4
正如预期的那样,测试环境工作流和部署环境工作流的结果是相同的。
另请参阅
mps.cache.Controller
(MATLAB Compiler SDK) | mps.cache.DataCache
(MATLAB Compiler SDK) | mps.sync.TimedMATFileMutex
(MATLAB Compiler SDK) | mps.sync.TimedRedisMutex
(MATLAB Compiler SDK) | mps.cache.control
(MATLAB Compiler SDK) | mps.cache.connect
(MATLAB Compiler SDK) | mps.sync.mutex
(MATLAB Compiler SDK)