Получение статуса сервера с Enyim Memcached Core
Я использую Enyim Memcached Core в своем проекте.NET CORE, и я попытался получить состояние соединения с сервером memcache, но не смог его получить.
Вот мой тестовый код:
// memcache servers
var serverList = new List<Server>
{
new Server
{
Address = "111.111.111.111",
Port = 11211,
},
new Server
{
Address = "222.222.222.222",
Port = 11211,
}
};
// memcached client options
var clientOptions = new MemcachedClientOptions { Servers = serverList };
var logger = new LoggerFactory();
var clientConfiguration = new MemcachedClientConfiguration(logger, clientOptions);
// create memcached client
MemCachedClient = new MemcachedClient(logger, clientConfiguration);
// get servers connection uptime
ServerStats status = MemCachedClient.Stats();
var serverData = status.GetRaw(
new IPEndPoint(IPAddress.Parse("111.111.111.111"), 11211),
"uptime");
// serverData is null!
Я проверил, как данные о состоянии сервера хранятся в классе ServerStats, и он использует словарь, в котором ключи создаются в следующем формате:
Endopoint AddressFamily / Enpoint IP: порт Enpoint.
В моем примере ServerStats имеет словарь со следующими данными Key-Value:
{[Unspecified / 111.111.111.111: 11211, ЗНАЧЕНИЕ СОСТОЯНИЯ ДАННЫХ]} {[Unspecified/222.222.222.222:11211, ЗНАЧЕНИЕ СОСТОЯНИЯ ДАННЫХ]}
Таким образом, кажется, что AddressFamily, назначенный при создании клиента memcached, является "Unspecified", но при создании нового IPEndPoint он инициализируется с помощью AddressFamily по умолчанию "InterNetwork".
Как только я понял, что причина, по которой я не могу получить статус сервера с помощью "status.GetRaw", заключается в том, что AddressFamily были другими, я попытался установить его в "Unespecified":
var socketAddress = new SocketAddress(AddressFamily.Unspecified);
IPEndPoint myEndpoint = new IPEndPoint(IPAddress.Parse("111.111.11.11"), 11211);
var myUnspecifiedEndpoint = (IPEndPoint)myEndpoint .Create(socketAddress);
Но это исключение и исключение, говорящее, что AddressFamily является InterNetwork и не может быть изменен.
Кто-нибудь знает способ получить статус сервера memcached клиента?
Спасибо!