Получение статуса сервера с 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 клиента?

Спасибо!

0 ответов

Другие вопросы по тегам