.net - Memcache 服务宕机——如何处理?

标签 .net memcached

我在我的 ASP.NET 应用程序中使用 Memcache。我有 3 个它连接的内存缓存服务器。如果所有这些都关闭,则加载页面会出现明显的延迟。当所有服务器都关闭时,我不想使用内存缓存。

当我单步执行代码时,我注意到当服务器关闭时,内存缓存代码不会抛出异常(我认为我可以在我的应用程序中“捕获”它并采取必要的步骤)。

我该如何处理这种情况?

最佳答案

您在这里尝试做的实际上并不是您应用程序的工作。

假设您的缓存接口(interface)是这样的。

public class CacheManager
{
    protected ICacheProvider _repository;
    public CacheManager(ICacheProvider repository)
    {
        _repository = repository;
    }

    public void Store(string key, object data)
    {
        _repository.Store(key, data);
    }

    public void Destroy(string key)
    {
        _repository.Destroy(key);
    }

    public T Get<T>(string key)
    {
        return _repository.Get<T>(key);
    }
}

如果是这种情况,如果所有内存缓存服务器都已关闭,您有什么选择?您只能通过访问您的数据库/文件系统/等来继续正常生活。毕竟,缓存顾名思义是不可靠的。

假设您的 memcached 在 *nix 服务器上运行,您应该寻找从网络或操作系统级别对其进行监控的方法。 Memcached 有一个 wiki page for this .编写规则/脚本来解析并通知您的管理员并提出来。您最简单的选择是使用 munin恕我直言

关于.net - Memcache 服务宕机——如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1682549/

相关文章:

java - 如何在 Servlet 中集成 memcached? Tomcat 和内存泄漏

python - 如何在 Django 中使用派生数据进行数据库内存缓存?

.net - 如何正确修改生成的XSD以克服导致异常 "cs0030:Unable to generate a temporary class"的已知.Net错误

c# - 对象未设置为对象的实例

.net - 资源文件名太长

ruby-on-rails - Rails.cache.fetch 在记忆化方面表现更好吗

c# - 如何根据数组索引从数组复制到 Vector256,反之亦然?

.net - WPF MenuItem.Icon 尺寸

memcached - ulimit 是否需要使用 -c 启动 memcached?

python-3.x - 从 python3.7 运行时连接到 Google App Engine 共享内存缓存