问题标签 [libmemcached]

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 投票
1 回答
562 浏览

memcached - libmemcached - 检查我是否已连接

有没有一种简单的方法来检查给定memcached_st*的是否已成功连接到 memcached 服务器?

我正在通过 连接,当我给它提供虚假主机名时memcached_server_add_with_weight它会返回。MEMCACHED_SUCCESS同样,memcached_last_error_errno在调用 to 后立即调用memcached_server_add_with_weight给我MEMCACHED_SUCCESS

0 投票
2 回答
344 浏览

mysql - libmemcached 存储 mysql 结果

我想通过 C 中的 libmemcached 将整个 MYSQL 结果存储在 memcached 中。这可能还是我必须将每个行元素分别存储在 memcached 中?

0 投票
1 回答
616 浏览

memcached - 使用 google 协议缓冲区附加/前置的 memcache

已解决:我尝试将单个 SerialKey 附加到列表中。当我现在用一个键附加一个 SerialKeyList 时,它可以正常工作。

我将 memcached 与 libmemcached 和 google 协议缓冲区一起使用,以在缓存中保存一个列表,该列表由元素列表和列入黑名单的元素列表组成。

.proto 是:

我想用 memcached_append() 附加 SerialKey 或 SerialBlackKey 类型的单个元素。我使用一个 SerialKey 元素(使用 memcached_set(SerialKeyList))初始化列表,然后附加一个 SerialBlackKey 元素(使用 memcached_append)。

从 memcached 解析列表并使用 PrintDebugString() 打印时得到的结果是

因此创建了两个列表,但未正确读取第二个元素。

这应该是可能的吗?从 Protobuf 编码文档中,我了解到重复字段不必跟随另一个,因此应该可以交错其他类型的字段。

/ EDIT:列表中只有一种类型的元素(SerialKey)有同样的问题。这里我使用 SerialKey 上的另一个属性来确定它是否在黑名单中。原型:

0 投票
2 回答
808 浏览

c++ - 集群节点的 libmemcached 故障转移

我在“c”中使用 libmemcached 来写入数据,使用 MEMACACHED_DISTRIBUTION_CONSISTENT_KETAMA。所有密钥都很好地分布在所有集群节点上,但是当我关闭其中一个节点时,密钥不会迁移。在谷歌上搜索并不清楚如何设置 libmemcached 自动执行此操作。有人有这方面的经验吗?

0 投票
2 回答
2536 浏览

php - 是什么导致 memcached 错误 10(“服务器错误”)?

使用 PHP,我在 memcached 中保留一个数组,作为以下过程的一部分:

  1. 从 memcached 中获取数组
  2. 对数组中的第一项执行操作
  3. 根据操作结果更新数组
  4. 在 memcached 中设置数组

该数组包含作为字符串的 URL。

对于大数组大小,memcached 集操作失败。最近,它因包含 78175 个 URL 的数组而失败。

我从 memcached 得到的错误有点笼统:

libmemcached 文档对于这个特定错误几乎没有用处。

我使用的代码非常简单:


libmemcached 文档对此错误几乎没有直接帮助,而且错误本身含糊不清是可以理解的。

memcached 错误 10 的原因可能是什么?

0 投票
2 回答
2239 浏览

c++ - 在没有 value_length 的 libmemcached 中使用 memcached_get()

所以我得到了一个非常相关的问题:libmemcached 中的 memcached_get() 问题

从文档中对我来说似乎并不明显或不可能。是否可以在不知道数据长度的情况下根据键获取值?我计划让多个线程更改键的值,因此无法保存值的先前长度。我尝试将*value_length设置为 NULL、0 或任意高数而没有效果(例如程序崩溃)。我希望这可以通过以 null 结尾的字符串来实现,但它不知道 libmemcached 的内部结构。任何建议,指针?谢谢。

一些更好的文档:http ://dev.mysql.com/doc/refman/5.1/en/ha-memcached-interfaces-libmemcached.html#ha-memcached-interfaces-libmemcached-get

0 投票
1 回答
5879 浏览

ubuntu - libmemcached-1.0.8 make 在 ubuntu lucid 中失败

我试图libmemcached-1.0.8在 ubuntu lucid 中从源代码制作和安装。我尝试了这些步骤

make 命令导致了这个错误

我已经安装了 memcached 使用

我试图检查 memcached 在哪里,使用whereis memcached ..它显示

有人可以告诉我应该怎么做才能正确制作和安装这个库吗?

编辑:

根据@sarnold 的建议,我使用了

进而

现在,文件夹中有 13 个以“mem”开头的新可执行/usr/bin文件

0 投票
4 回答
6372 浏览

django - 带有 Django 的 Heroku 上的 Memcached:无法安装 pylibmc / memcacheify

我在这方面花了很多时间,这显然超出了我的新手理解/技能范围。我尝试使用 pip install 安装django-heroku-memcacheify,这会引发错误。我将问题追踪到pylibmc,这导致了所有问题。这是错误日志中有趣的部分之一:

_pylibmcmodule.h:42:36:错误:libmemcached/memcached.h:没有这样的文件或目录

这是(几乎)完整的回溯:

所以这是交易

我无法在我的本地环境 b/c 中对其进行测试,我正在 Windows 上运行。但是从我读过的内容来看,libmemcached已经安装在 heroku 上。而且似乎没有其他人对 pylibmc 有任何问题,因为我在谷歌上找不到任何东西。在这篇文章中,他们正在谈论:

如果他们检测到您正在加载 pylibmc,他们将为您引导 libmemcached

这可能是问题所在,要么没有提供,要么路径错误。任何帮助表示赞赏!如果这不起作用,我将不得不使用 Redis,这似乎要困难得多……不知道我是否足够先进。

编辑 可能无关紧要,但我使用的是带有 init 的设置文件夹而不是 settings.py 文件。我听说这会导致一些奇怪的行为,因为 heroku 并不总是记得这是可能的。

编辑 2

由于有数百人在 heroku 上运行 memcached 和 django 没有任何问题,我认为 heroku 用户不应该使用某种 hack 来安装 libmemcached。当 heroku 在您的需求文件中检测到 pylibmc 时,文档会谈论它,就好像它是为您引导的一样。这使我得出结论:A)我的设置或我使用的其中一个应用程序有问题,或者B) heroku 最近更改了某些内容并破坏了 libmemcached for django 的自动引导。我尝试使用 heroku config:add CLEAN_VIRTUALENV=true 进行全新安装,但这现在也不起作用。我希望它是A并且有人遇到了同样的问题。如果是B我不知道如何解决它。

0 投票
1 回答
1390 浏览

macos - libmemcached 和 PHP memcached 库:在 OS X 上崩溃——超时?

我使用 Homebrew 进行所有安装,但在这里遇到了一些麻烦......

所以我有一个 PHP 应用程序,无论出于何种原因,它都使用“memcache”和“memcached”模块。任何。

系统是 OS X Lion,10.7.4。Apache 是 Apple 随操作系统 Apache/2.2.21 提供的库存。我正在使用 Homebrew 的 PHP 5.3.14。

我安装了我需要的一切:

brew install libmemcached memcached php53 php53-memcache php53-memcached

并进行配置——将 Apache 设置httpd.conf为指向 PHP .so 文件,并将 memcache 和 memcached 扩展添加到我的php.ini

我加载了我的应用程序......它使 httpd 崩溃了!

这是我得到的故障转储(长转储):https ://gist.github.com/3125309

如果我brew uninstall libmemcached弹回 httpd,我就可以正常访问我的应用程序,但是 memcached 实际上并没有工作,因为它(dur)找不到 libmemcached。

我真的很想让 memcached 在本地正常工作,但我不确定这里发生了什么。这只是 PHP 的一个问题;我可以使用 Python 的python-memcached模块来访问它(但我不确定它是否使用 libmemcached)。

有什么想法吗?我在故障转储中没有看到任何看起来有用的东西:(

编辑:啊,行号很有帮助!这是关联的 libmemcached 源代码块:

所以这听起来像是一个超时问题?但是我的 memcached 在本地主机上,它不应该超时......除非它没有尝试连接到正确的服务器。

不过,为什么这会导致完整的 httpd 崩溃?

EDIT2:我在禁用 SNDTIMEO 和 RCVTIMEO 的情况下重新编译,现在我很高兴启动并运行......但是,A)为什么配置脚本确定可以启用它们,B)为什么它会导致 httpd 崩溃?

0 投票
2 回答
4387 浏览

php - PHP 中的 memcached 持久性无法按预期工作

我尝试了一些不同的 memcached 库和插件版本,以实现 PHP memcache 客户端和 memcached 服务器之间的真正持久性。

问题是仍然打开和关闭连接,以便连接计数器上升,而不是重用现有的持久连接。

我已经从 Redhat 机器上的最新源代码编译了 memcached 守护进程。我使用版本 memcached-1.4.14 并以“#/opt/memcached/bin/memcached -vvvv”开头

我还从最新的源版本 memcached-2.0.1 编译的 php 插件,我已经针对 libmemcached-1.0.9 编译它以使其保持最新。目前它不能针对 libmemcached-1.0.10 进行编译。

我的 PHP 脚本如下所示:

在触发脚本时,我在输出中看到没有添加服务器,只有在超时时间之后。

但是连接计数器仍然上升,我想客户端创建了一个连接,并且在服务器端重新使用了持久连接。

在服务器端,我得到详细的输出,告诉我使用了持久性:

我们希望在具有大量传入连接的高性能环境中使用 memcache,而当前的连接数量确实会杀死 apache 子代。任何想法如何实现真正的持久性?

使用的软件:

  • 红帽企业 Linux 服务器 6.2 版(圣地亚哥)
  • PHP 版本 5.3.3
  • Prefork 中的 Apache/2.2.15
  • 内存缓存服务器 1.4.14
  • libmemcached 1.0.9
  • PHP memcached 插件 2.0.1