Получение статуса сервера с Enyim Memcached Core

89
9

Я использую 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?

Спасибо!

спросил(а) 2018-12-17T07:21:00+03:00 1 год, 9 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема