无法获得缓存的项目从memcached的回来?(Can't get cached items

2019-10-17 11:07发布

我刚刚安装的memcached一个Ubuntu系统,我有我的网络上。 没有改变任何选项,让一切都默认。 我认为试图连接到使用Enyim服务器。 它不会失败,但是当我尝试检索的项目,他们总是空。 我没有太多的低水平不会,但我已经能够面前,所以我决定试一试从Wireshark的辨别事物。 I'haven't能够辨别什么,但我发现我居然发送发送网络数据包到正确的地址的第一.Store()命令。 每.Store()命令没有绝对没有。

这里是我的app.config:

我都试过“二进制”和“文字”协议,他们也做了同样的事情。

这里是我的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地址无效。 相同的结果。

Answer 1:

答案很简单:如果你的服务运行检查你的端口,它应该以某种方式阻止。 (你对Ubuntu的防火墙(iptables的)11211端口添加例外?)

telnet 10.0.0.1 11211如果你有一个Telnet客户端服务器上,这将显示端口是无法访问。

Enyim不扔你一个错误,即使该端口无法访问。 是的,这很奇怪。



Answer 2:

要添加到dasun答案。 当您安装在默认情况下它的memcached配置为只有“LO / localhost”的接口进行监听。 它的唯一安全的memcache真的有。 即使你尝试远程登录本地和做指定例如LO接口:

telnet 10.0.0.1 11211

它会失败。 要解决,你必须进入memcached.conf文件并注释掉

# -l 127.0.0.1 

然后重新启动该服务



文章来源: Can't get cached items back from memcached?
标签: c# memcached