【问题标题】:Retrieve all items in cache检索缓存中的所有项目
【发布时间】:2011-11-21 05:51:06
【问题描述】:

我最近启动并运行了Enyim Memcached,它运行良好。使用图书馆,我可以毫无问题地存储和检索项目。

但是,我想知道是否有办法从缓存中检索所有项目。 我知道您可以通过键检索项目:

  MemcachedClient client = new MemcachedClient()
  object o = client.Get("key");

但我似乎看不到GetAll() 或类似的方法,是我遗漏了什么吗?

【问题讨论】:

    标签: c# caching memcached enyim


    【解决方案1】:

    不,你不能。 Memchached 不是为此目的而设计的(缓存并不意味着检索所有项目,这是毫无意义的)。

    【讨论】:

    • 如果您想从缓存项目列表中删除单个项目,它确实有一点意义......
    • 独立于存储和检索能力的情况下分析缓存内容通常很重要。
    • 虽然接受的答案说我是正确的,但谁能解释为什么我对此投票不赞成?
    • 即使你是对的,但人们不喜欢这个答案,你却被否决了。
    • 这是一个残酷的事实。那种很臭,因为如果您想将数据迁移到其他缓存引擎怎么办?
    【解决方案2】:

    我想详细说明大顺的回答。他是正确的,没有办法从标准 memcached 中取出所有键,但是还有其他风格的 memcached 允许您通过点击流来做到这一点。如果你使用 Membase 服务器(如果你只使用缓存桶 Membase 几乎只是 memcached),你可以这样做,或者你可以使用 memcached 的 Membase 分支,可以在这里找到https://github.com/membase/memcached。 Membase 分支绝对可以安全使用,许多顶级 memcached 贡献者为 Membase(现为 Couchbase)工作,并将该分支中的内容贡献回主 memcached 分支。

    另一方面,Enyim 客户端不支持 tap API,但有 Java、C/C++、python 和 ruby​​ 客户端支持 tap。您要做的是创建一个分接转储流,该流将向您发送所有键值对 memcached/Membase。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多