缓存管理对缓存的操作
NCache Management API 是一组可编程方法调用,使用户能够在 OutProc 缓存上执行基本管理操作,而无需使用 NCache 管理中心或命令行工具。该管理 API 在执行请求时通常是自给自足的。
先决条件
- 了解与所有人员合作所需的标准先决条件 NCache 客户端功能请参阅给定页面 客户端 API 先决条件.
- 有关 API 详细信息,请参阅: 缓存连接, 缓存管理器, 缓存连接选项, 缓存客户端连接已更改, CacheClientConnectivityChangedCallback, 客户信息, 已连接客户端列表, 获取缓存健康, 开始缓存, 停止缓存, 获取缓存.
使用 API 调用启动缓存
StartCache
方法使用户能够在指定的服务器上启动 OutProc 缓存。
启动缓存
缓存开始使用 StartCache
使用服务器 IP 和缓存名称的方法。
在此示例中,用户必须指定缓存和服务器 IP 才能启动节点。
// Specify cache name and server Info
string cacheName = "demoCache";
string serverIp = "20.200.20.40";
// Provide server info to CacheConnection
var connection = new CacheConnection(serverIp);
// Use CacheConnection to start cache
CacheManager.StartCache(cacheName, connection);
在启用安全性的情况下启动缓存
If 管理层安全 启用后,用户需要提供用户凭据才能对缓存执行任何管理操作。 这 StartCache
方法允许您使用用户凭据启动缓存。
以下示例启动一个启用了安全性的缓存。
// Provide user credentials to CacheConnection
connection.UserCredentials = new Credentials("your-username", "your-password");
// Start cache with the security credentials
CacheManager.StartCache(cacheName, connection);
使用 API 调用停止缓存
StopCache
方法停止特定服务器上的缓存。 如果用户未指定服务器,则该方法会从客户端配置文件中读取信息。 如果从客户端节点调用,则与缓存关联的客户端配置文件中列出的第一个服务器将停止。 您可以在启用和禁用安全性的情况下停止缓存。 此外,缓存也可以通过设置 gracefullyShutDownNode
标记为真。
停止缓存
此示例停止已启动节点上的缓存。 需要指定要在给定节点上停止的缓存名称和服务器 IP。
在启用安全性的情况下停止缓存
以下示例显示如何通过向其提供用户凭据来停止启用安全性的特定服务器上的缓存。
// Provide user credentials to CacheConnection
connection.UserCredentials = new Credentials("your-username", "your-password");
// Stop cache with the security credentials
CacheManager.StopCache(cacheName, connection);
使用 API 调用查看缓存状态
备注
确保在程序中包含以下命名空间: Alachisoft.NCache.Runtime.CacheManagement
.
GetCacheHealth
方法使用户能够查看缓存服务器节点状态。 此方法调用返回一个 CacheHealth
反对每一个电话。 您可以指定缓存名称、服务器节点和管理端口来获取缓存健康信息。 以下示例获取缓存 demoCache 的缓存运行状况,该缓存在指定的服务器节点上注册,并侦听端口号 8250。
// Get cache health on the specified node
CacheHealth cacheHealth = CacheManager.GetCacheHealth(cacheName, connection);
Console.WriteLine($"Cache : {cacheHealth.CacheName}\nNode : {serverIp}\nTopology : {cacheHealth.Topology}\nNode Status : {cacheHealth.Status}");
监控连接到缓存的客户端
NCache 提供启用客户端活动事件的功能。 使用这些事件,每个客户端连接到集群缓存,并可以订阅有关其他客户端的连接/断开事件的通知。 每个客户端还可以指定一个进程级自定义标识符,该标识符根据客户端的要求返回给订阅者,它可以连接到集群缓存或从集群缓存断开连接。 客户端活动 当客户端连接到指定缓存或从指定缓存断开连接时会触发事件。 这些事件针对指定的缓存进行注册,并在用户定义的回调方法中进行处理。
连接到缓存
AppName
是进程级唯一标识符,可以在缓存连接时分配。 为此,在连接到缓存之前,创建一个实例 CacheConnectionOptions
并为其分配一个自定义标识符字符串 AppName
属性。
因此,如果这个客户端连接或断开连接,所有订阅该客户端的客户端的回调都会得到这个 AppName
在他们的 ClientInfo
实例。
// Create an instance of CacheConnectionOptions
var options = new CacheConnectionOptions();
// Assign the custom identifier
options.AppName = "MyApp";
// Connect to cache with custom AppName property
ICache cache = CacheManager.GetCache(cacheName, options);
创建事件回调方法
回调方法是用户定义的,并且在客户端与缓存连接/断开连接时调用。 该方法是针对 CacheClientConnectivityChanged
的事件属性 CacheClientConnectivityChangedCallback
输入特定的缓存。 因此,创建的方法应该与委托的签名相匹配:
public delegate void CacheClientConnectivityChangedCallback(string cacheId, ClientInfo client);
创建的方法包含以下参数:
// User defined event callback method
static void MyClientConnectivityCallback(string cacheName, ClientInfo clientInfo)
{
// Handle event
}
参数 | 课程描述 |
---|---|
cacheName |
与客户端连接或断开连接的缓存的名称。 这充当事件的发送者。 |
clientInfo |
ClientInfo 类的一个对象,其中包含有关导致事件触发的客户端的信息。 |
客户信息类
委员 | 课程描述 |
---|---|
AppName |
用户分配的、进程级别的唯一标识符。 |
ClientID |
客户端的唯一 ID。 |
IPAddress |
客户端连接的IP。 |
MacAddress |
客户端的MAC地址。 |
PhysicalCores |
客户端的可用物理内核。 |
LogicalCores |
客户端的可用逻辑核心。 |
ProcessID |
客户端的进程 ID。 |
MachineName |
客户端的机器名称。 |
Status |
缓存客户端的连接状态。 |
ClientVersion |
缓存客户端的版本。 |
IsDotNetCore |
标记以检查客户端是否 .NET Core 或没有。 |
Memory |
客户端的可用内存。 |
Operating System |
客户端使用的操作系统。 |
注册事件
该方法是通过将其附加到 CacheClientConnectivityChanged
属性作为事件回调。 这使客户端能够侦听其他客户端的连接/断开连接事件。 如果另一个客户端连接到指定的缓存或从指定的缓存断开连接,则调用回调方法。
// Register method to event
cache.MessagingService.CacheClientConnectivityChanged += MyClientConnectivityCallback;
监控已连接客户端的客户端信息
ClientInfo
每个连接的客户端都可以在本地以以下形式获得 cache.ClientInfo
属性。
查看已连接客户端列表
要按需获取连接到缓存的所有客户端的信息,请使用 ConnectedClientList
缓存上的属性为:
// Connect to cache with custom AppName property
ICache cache = CacheManager.GetCache(cacheName, options);
// Get list of all connected clients
IList<ClientInfo> connectedClients = cache.ConnectedClientList;
Console.WriteLine($"Following are the clients connected to '{cacheName}':");
foreach(ClientInfo clientInfo in connectedClients)
{
Console.WriteLine($"Client ID : {clientInfo.ClientID}");
}