我只是在我网络上的ubuntu系统上设置memcached。没有更改任何选项,所以一切都是默认的。我想尝试使用Enyim连接到服务器。它不会失败,但当我尝试检索项目时,它们始终为空。我不是很低级不会,但我之前已经能够从wireshark中辨别出来,所以我决定尝试一下。我无法辨别任何东西,但我注意到第一个.Store()命令我发送了实际发送的网络数据包到正确的地址。每个.Store()命令都没有做任何事情。
这是我的app.config:
我试过“Binary”和& “文本”协议和他们做了同样的事情。
这是我的c#代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Enyim.Caching;
using Enyim.Caching.Configuration;
using Enyim.Caching.Memcached;
namespace MemCacheTest
{
internal class Program
{
private static void Main(string[] args)
{
//var config = new MemcachedClientConfiguration();
//config.Servers.Add(new IPEndPoint(new IPAddress(new byte[] {10, 0, 0, 1}), 11211));
//config.Protocol = MemcachedProtocol.Binary;
var mc = new MemcachedClient();
for (var i = 0; i < 100; i++)
mc.Store(StoreMode.Set, "Hello", "World");
mc.Store(StoreMode.Set, "MyKey", "Hello World");
Console.WriteLine(mc.Get("MyKey"));
Console.WriteLine("It should have failed!!!");
Console.ReadLine();
}
}
}
有谁知道最新情况或我如何确定错误?我觉得很奇怪,我没有得到任何例外,所以我在配置文件中设置了一个无效的IP地址。相同的结果。
答案 0 :(得分:1)
简短回答:如果您的服务正在运行,请检查您的端口,它应该以某种方式被阻止。 (你在Ubuntu防火墙(iptables)中为端口11211添加了一个例外吗?)
telnet 10.0.0.1 11211
如果您的服务器上有telnet客户端,则会显示该端口无法访问。
即使端口无法访问,Enyim也不会抛出错误。是的,这很奇怪。
答案 1 :(得分:1)
添加到dasun的答案。默认情况下安装memcached时,其配置为仅侦听“lo / localhost”接口。它是唯一的安全内存。即使您尝试在本地telnet并指定lo接口,例如:
telnet 10.0.0.1 11211
它会失败。要解决此问题,您必须进入memcached.conf文件并注释掉
# -l 127.0.0.1
然后重新启动服务