问题标签 [enyim]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
25487 浏览

memcached - 是否可以通过前缀获取/搜索 Memcached 键?

我正在给 memcached 写很多键/值 -> PREFIX_KEY1、PREFIX_KEY2、PREFIX_KEY3

我需要获取所有以 PREFIX_ 开头的键

可能吗?

0 投票
2 回答
971 浏览

caching - Memcached 依赖项

我正在使用memcahced(特别是 Enyim memcached 客户端)并且我希望能够使缓存中的键依赖于其他键,即如果键 A依赖于键 B,那么每当键 B被删除或更改时,键A也无效。

如果可能的话,我还想确保在集群中的一个节点发生故障的情况下保持数据完整性,即如果密钥 B在某些时候不可用,如果密钥 B应该变得无效,那么密钥 A应该仍然无效。

基于这篇文章,我相信这是可能的,但我正在努力理解该算法以说服自己如何/为什么它有效。

谁能帮我吗?

0 投票
1 回答
162 浏览

c# - 在版本控制/迁移数据方面需要帮助

我正在做一个项目,我将使用Membase(想想 Memcached + 持久性)作为具有多节点集群的持久层。我们正在使用Enyim客户端与缓存通信,并且我们正在使用二进制序列化来序列化/反序列化缓存中的对象。

我们关心的一个问题是我们如何有效地管理对数据模型的更改,如果我们使用普通的 SQL 数据库,我们可以运行更新脚本来更新您的表。

使用 Membase 并处理缓存的二进制对象,我们可以抓取所有缓存的对象并加载两个二进制文件:

  1. 用于序列化缓存对象的代码版本
  2. 定义不同属性的新版本代码

并像这样有效地迁移数据,但是当我们可能在缓存中可能有数千万个对象时,这几乎是不可取的。理想情况下,我们希望能够仅在必要时迁移数据并且有一些我们可以运行的迭代过程将版本 1 数据迁移到版本 2,然后迁移到版本 3,依此类推,但我很难想出一种方法来使用二进制数据执行此操作。

只是在黑暗中拍摄,有没有人有过处理此类问题的经验?我们非常乐意使用其他形式的序列化,并且可以简单地将字符串(可能是压缩的)数据存储在缓存中并自己处理序列化。

谢谢,

0 投票
1 回答
3631 浏览

.net - 防止与 memcached 的连接过多(Enyim 客户端)

鉴于常见问题解答报价,我正在寻找有关处理打开 memcached 连接的有效解决方案的建议:

请记住,没有什么能阻止您意外连接多次。如果您将 memcached 客户端对象实例化为您尝试存储的对象的一部分,当一个请求中的 1,000 个对象创建 1,000 个并行连接时,请不要感到惊讶。在加入列表之前,请仔细查找此类错误。

另请参阅:初始化 Memcached 客户端管理连接对象

我考虑在我们的缓存程序集中使用单例来提供 memcached 客户端,但我确信必须有更好的方法,因为锁会引入(不需要的?)开销。

我很清楚客户端的使用模式,我不清楚的是如何在可扩展性和性能方面有效地使用客户端。其他人如何处理使用 memcached 客户端?

里面有50个赏金给你。

0 投票
1 回答
500 浏览

membase - Enyim 性能问题

我正在使用 enyim 为多线程队列读取器提供对 membase 服务器的访问。这些读取器访问 AQMP 队列,检查缓存以查看该项目是否已被处理,如果没有,则将其插入数据库和缓存中。问题是访问缓存会占用 CPU。使用 4 个线程处理消息,CPU 为 80-90%。我已经实现了一个自定义序列化程序,它将字节提供给 enyim。如果我切换到我的内存回退,我可以在 CPU 使用率变高之前达到 9 个线程。内存缓存和 membase 缓存的唯一区别是字节存储在内存中而不是缓存中。知道我可能对 eynim 做错了什么,这可能导致 CPU 使用率很高还是正常的?客户端最多执行大约 2 个。

0 投票
1 回答
261 浏览

c# - Membase Node.IsAlive = False?

我们的 QA 环境中有 2 个 Web 服务器和 1 个应用服务器。它们每个都托管一个 Membase 服务。为简单起见,我们将 Web 服务器称为:web01 和 web02。两者都运行 IIS。

要访问 Membase,我们使用 .Net 客户端:http: //memcached.enyim.com/

我们在这里遇到的问题是 web01 可以随时访问 Membase、设置和获取值而没有任何问题。但是 web02 似乎无法从我们的 Web 应用程序访问 Membase。

我们编写了一个测试控制台应用程序并从 web02 服务器运行它,它工作得很好。

我们甚至尝试过 Telnet 到我们在 web02 配置中的 url 和端口,并且成功了。

Membase 配置值在 machine.config 文件中定义。我们使用 WinMerge 比较了 web01 和 web02 之间的 machine.config 文件,它们是相同的。

然后我使用反射创建了我们的 MembaseClient 对象的转储,这是我们在 Web02 上得到的:

===========================================

===========================================

请注意最后 3 行如何提到 Node IsAlive = False... 这对我来说非常令人费解,因为 web01 表示所有节点都处于活动状态,Membase 管理控制台也是如此。再次从我们的测试应用程序中,在任何地方运行,包括 web02,我们可以在那个 QA Membase 集群中成功设置和获取值。

有人遇到过这个问题吗?或者对我们应该在哪里解决它有任何想法?

谢谢。

0 投票
6 回答
5978 浏览

memcached - Enyim Memcached 客户端不适用于传递的过期参数

当使用 Enyim memcached 客户端存储具有过期时间跨度的数据时,我发现它不起作用。有人可以帮忙吗?

在我的测试代码中,我将日期存储为 10 分钟到期时间,我尝试立即从缓存中获取它,但得到了一个空对象。

0 投票
1 回答
6186 浏览

c# - 无法在 memcached 中存储复杂对象

我正在使用 Enyim。缓存 C# 的 memcached 客户端服务器是http://memcached.org在最后一个版本的 ubuntu

而 myXml 为空,为什么有办法存储我的对象。目的:我试图在 Memcached 的代码中替换 HttpCache,但使用 HttpCache 我可以将复杂对象添加到缓存中。

这里 XmlDocument 是一个示例,但是对于一个简单的类它也不起作用

0 投票
2 回答
906 浏览

linq - Enyim 序列化错误 Linq

我正在使用 Devart 来执行数据库对象和存储过程映射。

现在我想将存储过程对象结果存储在缓存中(使用 MemCached 的 Enyim)。

当我尝试这样做时,我遇到了这种错误(简而言之:Devart.Data.Linq 中的类型 Devart.Data.Linq.a 未签名为可序列化)

这是 Enyim 日志。我确信 MemCached 配置正确,因为我尝试通过 telnet 获取和设置缓存中的对象,这已经完成。

0 投票
1 回答
355 浏览

exception - Enyim 的 Memcache (northscale) 套接字池问题

我正在使用 Northscale 1.0.0,需要一点帮助才能让它跛行足够长的时间以升级到新版本。我正在使用 C# 和 ASP.NET 使用 Enyim 库来处理它。我目前怀疑应用程序在我的 app.config 中的每个 socketPool 设置没有足够的连接。我还注意到,以前的开发人员的代码只是将尝试调用 MemCache 的任何异常视为该项目不在缓存中,这(我相信)可能会导致池获取时对数据库的调用周期性峰值饿死了。我们一直有奇怪的负载峰值,似乎与服务器负载没有任何关系。我怀疑他没有正确管理与 Northscale 的连接的生命周期,因此我们会定期在套接字池中遇到饥饿,

当我调用 Get 方法从缓存中检索项目时,我应该寻找一个特定的异常吗?我在文档中并没有真正看到太多可以为我提供足够信息的文档。有人有这方面的示例代码吗?我什至会接受 java 或 php 代码,因为我认为 .NET 库可能还是基于其中之一。

有任何想法吗?

谢谢,威尔