数据缓存基础知识
警告
从以后的版本开始,Redis™ 将不再与 MATLAB® Production Server™ 和 MATLAB Compiler SDK™ 一起发布。Redis 支持这些产品中的数据持久性功能。您需要提供自己的 Redis 持久性服务。受影响的函数包括 start、stop 和 restart。
持久性提供了一种在服务器实例上运行的 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>
}
}
} |
指定 <connection_name>,<hostname>,和 <port_number> 在 JSON 文件中。主机名可以是 localhost,也可以是从 Azure® Redis 缓存资源获取的远程主机名。如果使用 Azure Cache for Redis,则必须指定访问密钥。要使用 Azure Redis 缓存,您需要一个 Microsoft® Azure 帐户。
您可以在文件 mps_cache_config 中指定多个连接。每个连接必须具有唯一的名称和唯一的(主机,端口)对。如果您通过仪表板使用持久性服务,则会自动在服务器实例的 mps_cache_config 夹中创建文件 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 编译器或
mcc打包文件myCounter.m。将存档(
myCounter.ctf文件)部署到服务器。测试计数器。您可以使用用于 MATLAB 函数执行的 RESTful API从 MATLAB 桌面。
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)
