本文作者陈捌华,感谢捌老师倾情奉献。
概述
Apriso 从 2022 版本开始在基础架构中增加了对 Redis 内存数据库的支持,用于存放会话状态、快速缓存存储。2022 之前版本是存储在 ASP.NET State Service 和 DELMIA Apriso State Service 中。将用户会话存储在系统服务外的 Redis 数据库中可以避免故障转移集群切换节点时丢失用户会话,避免用户重新登录。
可以使用 Redis 的 DELMIA Apriso服务:
Apriso支持Redis单点和集群模式:
本文作为演示,介绍如何在 Apriso 中启用 Redis (stand alone)模式下作为会话状态服务器。
服务器架构
启用Redis后的服务器架构如下图,Poral 和 App 服务将连接到 Redis 服务器进行缓存。
Redis安装和配置
第一步:下载Redis
Redis 官方下载(官方地址:http://redis.io/download)只能用于 Linux 环境下,所以要在 Windows 环境下安装 Redis 就不能从官方进行下载了。为了能够在 Windows 平台安装 Redis,微软的 Microsoft Open Tech团队为我们开发了 Windows 版本下 Redis。下载地址为:http://github.com/MSOpenTech/redis
备注:建议在生产环境下,选择直接在 Linux 安装 Redis 的模式,本文介绍中使用 Windows 版本 Redis。
第二步:安装 Redis
1、 将 Redis-x64-3.2.100.zip 下载到D盘,解压后将文件夹重新命名为 redis,运行文件夹下面的 redis-server.exe。
2、 弹出上图窗体后,先不要关闭,否则就无法访问服务端了。此时在Windows 的运行中输入 cmd 命令,切换到 redis 目录下运行redis-cli.exe
3、 Redis 重启和服务安装命令:
3.1 Redis重启:
考虑到 Redis 有可能正在将内存中的数据同步到硬盘中,如果强行终止Redis 进程有可能会导致数据丢失。正确停止 Redis 的方式应该是向Redis发送 shutdown 命令,通过客户端来关闭 Redis 服务端,方法为
当 Redis 收到 shutdown 命令后,会断开所有的客户端连接,然后根据配置执行持久化,最后退出。
3.2 Redis 安装成 Windows 服务:
进入到 redis 目录下,然后执行 redis-server --service-install redis.windows-service.conf,如下图:
在 Windows 的运行中输入 services.msc 命令进入服务,此时可以看到 Redis 服务已经创建成功。
注意:此时 Redis 状态还处于未启动状态,双击并启动即可。
卸载命令: redis-server --service-uninstall
3.3 Redis密码配置:
首先使用 shutdown 命令关闭 Redis 服务端,然后使用文本编辑器(这里使用 Notepad++),打开 Redis 服务配置文件 redis.windows-service.conf,找到含有 requirepass 字样的地方,在其下面追加一行,输入 requirepass 12345并保存。
这是访问 Redis 时所需的密码,一般测试情况下可以不用设定密码。不过,即使是作为本地访问,也建议设定一个密码,此处以简单的 12345 来演示。
在服务中启动 Redis 服务后,在命令操作符窗体中重新登录 Redis。
此时随便输入一个命令,发现无法执行命令了:
输入授权命令 auth password 即可正常操作:
第三步:下载 Redis 客户端
这里主要介绍 Redis Client 的下载安装及基本使用。
RedisClient 是 Redis 客户端的 GUI 工具,使用 Java swt 和 jedis 编写,可以方便开发者浏览 Redis 数据库。该软件支持简体中文,非常适合国内用户使用,不需要汉化就可以直接使用。RedisClient 将 Redis 数据以资源管理器的界面风格呈现给用户,可以帮助 Redis 开发及维护人员方便地增加、删除、修改、查询 Redis 数据,完全不需要了解 Redis 命令。另外还可以让用户方便地拷贝、粘贴、导入、导入Redis数据,同行进行排序。
RedisClient 下载地址:https://github.com/caoxinyu/RedisClient
下载后直接解压,不需要安装即可使用。
双击打开 exe 文件(此处是 redisclient-win32.x86.2.0.exe),选择View->Language->中文,然后选择服务器->添加,输入相关连接信息->确认。
成功后界面如下:
默认数据库数量为16个(db0-db15),选择数据库(如果是命令行操作,默认是操作db0,要指定其它库,需要select 1(1为数据库下标)),新建自己想建的数据类型即可,这不像关系型数据库,并没有表的概念。
Apriso配置
第一步:数据库连接配置
打开 Configuration manager 程序,进入数据库连接(Database Connection)标签页进行配置:
第二步:配置文件Web.config修改
打开 C:\Program Files\Dassault Systemes\DELMIA Apriso2023\WebSite\Portal
1、 修改 sessionState,进行注释和取消注释
其中 timeout 的值需要和 Central Configuration 中的PortalSessionTimeout 值保持一致。
2、 修改 Session,进行注释和取消注释
3、 取消注释:<add key="aspnet:AllowConcurrentRequestsPerSession" value="true"/>
修改完成后重新启动Apriso服务。
验证和测试
打开 Portal、PB、Desktop Client 等应用,验证是否能够正常连接登录,比较修改后登录时间长短,在单机用户环境下性能还是有不少提升的,具体真正效果待验证。
使用 Redis Client打开,数据库是否记录 session state,Cache 等状态,可以看到在db0下自动生成了 Apriso 相关 Key-Value 信息。