大家好。我叫苏莱曼,在今天的视频中,我们将学习如何使用 NCache 它可以作为 Java Web 应用程序或 Web API 的 Spring 会话提供程序。如果您正在创建 Spring MVC 或 Spring Boot 应用程序,或者部署在多服务器环境中的 RESTful API,那么本视频非常适合您。
默认情况下,Spring 会话数据存储在应用程序或服务器内存中。因此,如果服务器重启,会话数据也会丢失。 NCache 它通过在缓存集群内创建复制会话存储来解决这个问题,该存储用于存储所有会话数据,并使其同时可供所有服务器使用。
现在您可以看到这里的图表。通常情况下,情况是这样的。 NCache 已部署在企业环境中。请注意,它有一个独立的缓存层,由我们的缓存服务器组成。缓存层之上是应用层,由我们的缓存客户端组成。最后,缓存层位于最底层。
好的。在开始设置之前,我想先展示一下我当前的项目布局。正如你所看到的,这里有一个 Spring Boot 应用。目前,我还没有…… NCache 它已作为会话存储提供程序集成。我们将逐步讲解。您可以看到这里有两个页面,首页和备注页。首页就是登录注册页面。登录后,您可以查看或添加用户备注。
还有一点,在我的控制器类中,我定义了几个端点。在登录注册端点中,我设置了会话属性,包括用户名和用户的身份验证状态。在注销端点中,我调用了 `session.invalidate()` 方法。这会使缓存集群和应用程序中的会话失效。最后是视图备注部分。我有一个记录备注的映射表,这些备注也存储在会话中。好的。
我们快速地去看一下…… NCache 管理中心我要刷新一下。我已经配置了一个名为 demoCache 的缓存。如您所见,它是一个部署在 Docker 实例上的单节点服务器。我还要查看一下统计信息,确保里面没有数据。完美。好的。现在我们可以继续进行设置了。
各位,设置非常简单,只需要两步,完全不需要任何指导。首先,我们需要添加…… NCache 我们项目依赖于 Spring Session。因此,如果您想查找依赖项,请转到…… NCache 网站。我们进入“开发者”、“Java集成”页面,然后从这里我们可以看到 春季会议这会将你引导到 Maven 中央仓库。这样我们就能随时知道最新的构件名称和版本。好的,我现在要把它复制到我的…… pom.xml 文件中。
<dependency>
<groupId>com.alachisoft.ncache</groupId>
<artifactId>ncache-spring-session</artifactId>
<version>5.3.6</version>
</dependency>
我要重新加载一下。再仔细检查一下我的外部库。所以我们有 ncache-客户端, ncache-runtime, ncache-spring-session太好了。我们现在可以进行下一步了。
最后一步是向我们的主类添加注解。启用 NCache HTTP 会话。这用于常规会话存储。您也可以选择启用它。 NCache 索引式 HTTP 会话存储,再次强调,这是索引式会话存储。我们暂时先使用第一个。可以看到,我们向注解传递了一些参数,例如最大非活动间隔。我们还可以传递缓存名称。
@使能够NCacheHttpSession(maxInactiveInterval = 100)
Session.invalidate()
Session.setAttribute("authUser", username)
Session.getAttribute("authUser")
我们现在就开始吧。我要进入主类,然后添加 Enable 函数。 NCache HTTP 会话。我将传入缓存名称,在本例中为 demo cache。最后,我将传入最大非活动间隔,我这里设为 100 秒。
这意味着 100 秒后,我们的会话应该从缓存集群和应用程序中失效。这似乎是多余的,因为我认为它默认会使用 demoCache。所以我们要移除它。现在我们可以启动应用程序了。
所以我现在要开始测试了。与此同时,我会并排打开我的统计信息窗口。我们来仔细看看这个窗口。我把它最小化。请记住,目前我们的计数为零。所以我预计,一旦本地主机加载完毕,就会创建一个新会话并将其存储在缓存集群中。而这正是正在发生的事情。现在计数已经增加了。
如果你能看到这里的日志,就会发现它反映的正是如此。我在这里创建一个用户。登录后,我进入笔记部分。我们应该仍然处于登录状态,因为我们的会话被保留了。我要写下我的第一条笔记。如果你还记得,我们之前是将用户笔记存储为会话属性的。好的。所以我希望当我在页面之间来回切换时,这些笔记仍然有效。而这正是我们在这里看到的。
最后,我要做的就是登出。如果你还记得,登出时我们调用了 `session.invalidate()`。这是我明确定义的。所以我预期我的会话会被清除。而实际情况也正是如此,从缓存集群中我们看到会话已被删除,并创建了一个新的会话。所以如果我以同一个用户身份重新登录,我预期可以登录。但是当我查看我的笔记时,我的笔记应该已经被清空了。如果我们快速查看一下日志,就会发现情况正是如此。它找到了一个会话,删除了该会话,然后没有找到会话,并创建了一个新的会话。好的,这正是我们预期看到的情况。
演示到此结束。感谢大家的观看。如果您想了解更多信息,请继续阅读。 NCache请 安排演示 了解更多关于其 建筑,它的 功能策略,以及如何将其融入到你的申请中。非常感谢观看本视频。