问题标签 [spymemcached]

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 投票
2 回答
5935 浏览

java - spymemcached - 是否可以禁用日志系统?

我们正在使用 spymemcached memcached 客户端,但我们没有发现如何禁用日志系统。

我们如何在运行时将当前的日志系统更改为 log4j 或 sl4j 之类的系统?

注意:我们可以传递一些 VM 参数,但问题是:我们不能更改我们的服务器配置。是否可以在运行时传递这些 VM 参数?如果可能的话,我们怎么能做到这一点?

0 投票
2 回答
646 浏览

java - 如何从 java 中清除 Memcached (1.4.x) 统计信息

在我们尝试过的 java 客户端(SpyMemcacheD 和 Danga)上运行 flush() 不会重置 memcached 服务器上的统计信息。

有谁知道这样做的好方法?我可以实现一个远程登录客户端发送

统计重置

但这似乎太过分了

0 投票
1 回答
2932 浏览

java - Spymemcached,配置故障转移

我有一个 membase 主机集群,还有一组 moxi 进程,运行在不同的机器上,都配置为与这个集群通信。

我的客户端正在使用 spymemcached,我正在尝试配置 MemcachedClient,以便它了解所有可用的 moxi 进程。这样,如果其中一个进程死亡,我希望 spymemcached 使用不同的 moxi 并继续向集群发送数据。

理想情况下,所有这些都应该在不丢失队列信息的情况下完成。

我正在玩两个 moxi 进程,但无法让它做我想做的事。

我查看了http://groups.google.com/group/spymemcached/browse_thread/thread/d33ca15c0a928d37#http://groups.google.com/group/spymemcached/browse_thread/thread/f7cc37fc509b70a6/cbb967e824a0ab04?hl= en&lnk=gst&q=redistribute#cbb967e824a0ab04没有运气。

有人可以告诉我这在 spymemcached 中是否可行?如果是这样,我应该如何配置它?

我正在使用 ConnectionFactoryBuilder 的不同配置。

0 投票
1 回答
1093 浏览

grails - 使用 grails 和 memcached-session-store 的 http 会话过多

我有点迷失在这里。

我正在使用在 tomcat 中部署的 grails 应用程序和memcached-session-store。它使用spymemcached

我也在使用旋律插件来监控应用程序。

在右上部分,有一个只会增长的 http-sessions 图。

我们需要知道这是否是一个潜在的问题。目前,在不知不觉中,我们每天都重新启动网络服务器。作为最后的测试,我们将让 http-sessions 增长,看看将来它是否倾向于自行清理。

这是我正在谈论的图表:

Http会话过多

所以:有问题吗?我是否必须配置 memcached、tomcat、grails、memcached-session-store 或 spymemcached 以使会话过期时间更短?我在 Internet 上找不到如何做到这一点。

任何指针都会有所帮助。

提前致谢

0 投票
1 回答
2404 浏览

java - 估计 memcached 中 Java 对象的大小

我有一个 Java 应用程序,它使用 spymemcached 库 (http://code.google.com/p/spymemcached) 来读取对象并将对象写入 memcached。

该应用程序始终将相同类型的对象缓存到 memcached。缓存的对象始终是 5 或 6 个 java.util.Strings 的 ArrayList。使用 SizeOf 库 (http://www.codeinstructions.com/2008/12/sizeof-for-java.html),我确定 ArrayList 的平均深度大小约为 800 字节。

总的来说,我为 memcached 分配了 12 GB 的 RAM。我的问题是:memcached 可以容纳多少个这些对象?

我不清楚使用 SizeOf 中的“800 字节”度量是否正确,或者这是否具有误导性。例如,SizeOf 将每个 char 计为 2 个字节。我知道我的字符串中的每个字符都是常规的 ASCII 字符。我相信 spymemcached 使用 Java 序列化,我不确定这是否会导致每个字符占用 1 个字节或 2 个字节。

另外,我不知道 memcached 使用了多少每个对象的开销。因此,计算应考虑 memcached 用于其自身内部数据结构的 RAM。

我不需要一个 100% 准确的数字。粗略的粗略计算会很棒。

0 投票
1 回答
1671 浏览

java - spymemcached get 和 incr 方法给出完全不同的结果

我在我的 Java 项目中使用 spymemcached 2.6rc1,我想将 Long 类用作可存储对象。不幸的是,当我存储例如 new Long(0) 对象时,get(...) 和 incr(...) 给出完全不同的结果 - get 给出包含 48 值的 Long 对象,而 incr 给出 1。请注意 48代表ASCII“0”符号。当我尝试直接从 memcached(例如通过使用 telnet)获取相同键的值时,我得到了正确的结果 - 0。奇怪的是,Long 是很好的序列化类。因此,默认转码可能存在一些问题。有人可以澄清如何解决这种情况吗?

0 投票
1 回答
2336 浏览

java - 防止与 spymemcached 冲突

我正在尝试使用 spymemcached 2.6 与更新同步,我发现了以下两种使用方式:

  • 使用 CASMutation 定义一个 CASMutator,这是一种非常侵入性的实现方式,让我们看一个例子:

    /li>

或通过使用cas方法

完成后:

第二个真的更简单,我明白我为什么要使用 CASMutation ......我真的很高兴能得到一些关于使用这个 couchbase 客户端的反馈。

0 投票
3 回答
635 浏览

coldfusion - 在 Coldfusion 阵列中丢失物品

这真让我抓狂。我们尝试构建一个 CF memcached 包装器。我们有一个这样的 memcached.cfc 组件:

奇怪的是,运行 30 分钟左右后,getCache 开始失败,表明 application.memcached.m 数组中的位置 idx 处没有项目。

这怎么可能发生?CF 数组是使用弱引用还是什么?当然,一旦阵列填充了 20 个客户端,阵列应该始终保持满吗?

每个新客户端都会产生一个新线程,因此一旦我们失去对客户端的引用,现在就有办法将其关闭,并且该线程永远存在于那里并占用内存。请问,我错过了什么?

0 投票
3 回答
3460 浏览

java - 保证的 memcached 锁

因此,我尝试使用 memcached 和 add() 的存储来实现分布式锁,前提是不存在合约(Java 和 spymemcached,但当然适用于任何语言)。当然,如果一个实例消失了,那么我们就会失去锁,所以我们想加锁 3 次(例如 MyLock1、MyLock2、MyLock3),这很可能会散列到 3 个不同的实例。

但是,我已经意识到,如果一个实例的哈希值下降,那么显然会发生变化(使用 spymemcached 的重新分发故障模式),因此当再次尝试 add() 锁时,所有 3 个锁的哈希值可能不会匹配 memcached 集群中剩余的 2 个锁中的任何一个。

那么......对于使用 memcached 的分布式锁还有其他想法吗?或者基本上不可能像我所指的那样做一个有保证的锁?

编辑:好的,所以在查看 spymemcached 源代码时,对于 Redistribute 模式,它只是转到其列表中的下一个活动 memcached 实例,而不是重新散列任何东西,所以它应该可以正常工作。

0 投票
1 回答
1797 浏览

java - Java + Membase + spymemcached 批量操作

我目前正在编写一个需要对键/值存储进行批量操作的应用程序,此时我正在使用 membase。

spymemcached 允许批量获取,但不允许批量 CAS 或添加;我认为如果实施会被广泛使用的功能。

此时我的一组批量操作的代码大致如下图所示。

“客户端”是单个 MemcachedClient。

Future.get() 的阻塞调用似乎效率很低,有没有更好的方法?在我的实际场景中,我希望能够在它们返回后立即处理期货(这可能会或可能不会按照它们发送的顺序?)。

此外,以下操作是否可能(或计划实施)?

- 添加或返回现有值

- 如果值等于已知值,则删除

- 如果值等于已知值,则设置

谢谢,马库斯