Я использую 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 Port].
В моем примере ServerStats имеет словарь со следующими данными значения ключа:
{[Unspecified / 111.111.111.111: 11211, STATUS DATA VALUE]} {[Unspecified / 222.222.222.222: 11211, STATUS DATA VALUE]}
Таким образом, кажется, что 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?
спасибо!