首页 > 解决方案 > AWS C# lambda 使用 Memcached (EnyimMemcached),存储总是失败

问题描述

在 AWS 中,我在私有子网中的 VPC 中设置了一个小型 memcached 节点。我的 lambda 在同一个 VPC 和私有子网中。

我的 lambda 毫无例外地运行 EnyimMemcached 代码。

当我查看 CloudWatch 时,当执行 lambda 时,我的 memcache 节点有连接,它还显示写入的字节数,但“使用的缓存项目字节数”保持为 0,并且存储命令返回“False”。

我的 Get 请求也显示在 Cloudwatch 中,因此似乎与节点存在连接。我得到的总是错过,这是有道理的,因为商店没有成功。

这就是我在测试时设置 memcache 的方式。我希望有人能指出我做错了什么,因为我一直试图解决这个问题。

var loggerFactory = new LoggerFactory();
ILogger logger = loggerFactory.CreateLogger<ValuesController>();

var memcacheOptions = new MemcachedClientOptions();

var config = new MemcachedClientConfiguration(loggerFactory, memcacheOptions);
config.Protocol = MemcachedProtocol.Binary;

var mc = new MemcachedClient(loggerFactory, config);

bool done = mc.Store(StoreMode.Set, "foo", "bar", DateTime.Now.AddMinutes(5));

谢谢

标签: c#amazon-web-servicesmemcachedamazon-elasticacheenyim.caching

解决方案


进行以下更改后,它开始工作:

var memcacheOptions = new MemcachedClientOptions();
memcacheOptions.Protocol = MemcachedProtocol.Binary;

var config = new MemcachedClientConfiguration(loggerFactory, memcacheOptions);
config.AddServer("memcache_server_address:port");

现在我正在努力在 Startup 的 ConfigureServices 中找到正确的地址设置。


推荐阅读