Как настроить EnyimMemcachedCore для доступа к Elasticache в AWS Lambda?

Я пытаюсь перенести простой клиент memcached с.NET 4 на.Net Core на AWS Lambda. Я изо всех сил пытаюсь настроить новый клиент EnyimMemcachedCore, потому что примеры ( https://github.com/cnblogs/EnyimMemcachedCore) используют appsettings.json для настройки конфигурации, но функции Lambda, использующие ядро ​​.net, не используют appsettings.json. Мне нужно иметь возможность настроить сервер / порт / конечную точку в коде C#.

Кто-нибудь может привести пример использования EnyimMemcachedCore, который создает конфигурацию вручную?

Стандартное использование.net Enyim было тривиально, чтобы получить ключ и вернуть значение:

using Enyim.Caching;
using Enyim.Caching.Configuration;
using Enyim.Caching.Memcached;

...
// setup Enyim memcached client
MemcachedClient myCache;
MemcachedClientConfiguration config;
config = new MemcachedClientConfiguration(); 
config.AddServer("theIP", thePort);
config.Protocol = MemcachedProtocol.Text;

// instantiate client
myCache = new MemcachedClient(config);

// get the stored item
var result = myCache.Get(key);

Как мне сделать нечто подобное (настроить клиент memcached в коде, а не в файле конфигурации) с EnyimMemcachedCore?

2 ответа

// setup Enyim memcached client
var config = new MemcachedClientConfiguration();

//add each node manually if you can't get the Amazon.ElastiCacheCluster config for Core, 
//but if you can, use that instead of MemcachedClientConfiguration
config.AddServer("something.0001.usw1.cache.amazonaws.com", 11211);
config.AddServer("something.0002.usw1.cache.amazonaws.com", 11211);

config.Protocol = MemcachedProtocol.Text;

// instantiate client
var myCache = new Enyim.Caching.MemcachedClient(config);

вы можете добавлять узлы по отдельности, пока конфигурация кластера не станет доступной для.NET Core (если это еще не сделано)

Я думаю, что это было исправлено на сегодня, 18 сентября 2018 года. Я попробовал следующие настройки приложений, использовал конечную точку конфигурации memcache, которая имеет один узел

"enyimMemcached": {
    "Servers": [
        {
            "Address": "st-cache-01-v2.l0nmej.cfg.xxxx.cache.amazonaws.com",
            "Port": 11211
        }
    ]
}

И код на ConfigureServices

services.AddEnyimMemcached(Configuration);

Это работает как шарм. Я еще не пробовал с двумя узлами. Пожалуйста, не стесняйтесь исправлять меня, если он не работает для более чем одного узла

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