问题标签 [libmemcache]

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 回答
7765 浏览

php - Memcache 一致性哈希、集群、PHP 代码、Ketama 等

我一整天都在尝试用 PHP 理解 Memcache 并编写代码,但我在某些方面感到困惑。我浏览了很多文章,几乎所有与此相关的 SO 问题,但找不到确切的答案

1) 在 PHP 中创建一致散列密钥的代码是什么?我必须安装哪些库以及我真正需要做什么?有什么好文章可以看吗?

2)假设,我已经成功存储了一个一致的散列密钥,现在如果我的任何服务器关闭或添加了一个新服务器,即使我使用的是一致的散列密钥等也会有什么不同吗?

3)如果在http://ru.php.net/manual/en/memcached.addserver.php中所述的一致哈希的情况下,使用 Memcached::addServers() 而不是 Memcached::addServer() 会产生任何影响不是那是什么意思?

4) 使用上述代码是否足以进行一致哈希,然后添加/删除服务器不会对密钥产生任何影响?

5) 什么是 Ketama 图书馆?如果 Memcached::DISTRIBUTION_CONSISTENT 可以更好地工作,为什么要使用它?以下http://www.last.fm/user/RJ/journal/2007/04/10/rz_libketama_-_a_consistent_hashing_algo_for_memcache_clients

6) 我是否必须以某种方式对我的密钥进行哈希处理,或者只提供我的密钥并让 Memcached 处理其余的?

请各位,我需要你们的真正支持,以便尽快了解并实施我的生产环境。你的回答会让我明白我应该更好地编码什么。

0 投票
1 回答
376 浏览

php - “php_network_getaddresses: getaddrinfo failed”是什么意思?

“php_network_getaddresses: getaddrinfo failed”是什么意思?

当我使用 memcache 时,我发现这个“什么是“php_network_getaddresses:getaddrinfo failed”的含义?” 运行 memcache 的方法时出现。

0 投票
1 回答
951 浏览

mysql - 使用 memcache_functions_mysql UDF 处理 memcache 和 mysql

我已经安装了以下软件包——

  1. libevent-2.0.21
  2. memcached-1.4.17
  3. libmemcached-0.34
  4. memcached_functions_mysql_1.1

以上都安装成功了。ldconfig -v 命令的输出(显示已包含 libmemcached 库的部分)如下:

但是,当我尝试使用 memcache_functions 附带的 install_functions.sql 将 UDF 加载到 mysql 中时,它会引发以下错误:

插件目录的内容是:

0 投票
2 回答
4101 浏览

mamp - 在 MAMP Mac OX X 10.9 上安装 memcache PECL 扩展

我正在尝试在运行 10.9 (Mavericks) 的 Mac 上的 MAMP 中安装 PECL memcache 扩展。我刚刚升级到 MAMP 3.0,需要重新安装。

我在终点站跑了sudo pecl install memcache,但我的路径似乎被塞满了,找不到php.h。好像进去了/Applications/MAMP/bin/php/php5.5.10/include/php/main/php.h/Applications/MAMP/bin/php/php5.5.10/include/不存在。

这是我的终端日志。其他人遇到过这个问题吗?

0 投票
0 回答
188 浏览

php - 在 php 中使用带有 memcache 的 setOption 函数

我正在使用memcache扩展来连接和使用 Memcache 服务器。但是现在,我想使用这个库中不存在但存在于 Memcached 中的函数,称为Memcached::setOption

将整个代码从 Memcache 移动到 Memcached 对我来说真的很困难。

有什么方法可以使用 setOption 函数的功能,而无需更改任何地方的代码?

0 投票
1 回答
948 浏览

php - 如何在 Mavericks 上安装 memcache?(MAMP)

我的机器上有 MAMP,我想为 php 安装 memcache,因为我的一个项目会抛出类似Fatal error: Class 'Memcache' not found.

我从 appstore安装了X-Code ,并使用homebrew安装了libeventmemcachedlibmemcached

然后..

安装共享扩展:/usr/lib/php/extensions/no-debug-non-zts-20100525/

之后,我将 memcached.so 和 memcache.so 复制到我的 extension_folder:

/Applications/MAMP/bin/php/php5.5.10/lib/php/extensions/no-debug-non-zts-20121212/

并将 extension = memcached.so 添加到我的 php.ini 中。

我仍然遇到致命错误..有什么问题?

0 投票
2 回答
15247 浏览

php - PHP 会话未保存在内存缓存中

使用 Amazon Linux 在 AWS 上使用 php 5.4 运行应用程序。

PHP 版本是 PHP 5.4.28。从 AWS 存储库安装的 memcache 库是 php54-pecl-memcache-3.0.8-1.11.amzn1.x86_64

我已经验证 php 正在使用 /etc/php.ini:

该设置表明我应该使用 memcache:

我可以从盒子远程登录到端点和端口并正确连接,因此实例能够连接到 memcached 服务器。

我们尝试过的事情:

  • 我已经从 php.ini 文件中删除了 tcp://,这并没有什么不同——会话仍然保存在文件中。
  • 我们已从 session.save_handler="memcache" 更改为 session.save_handler="memcached"
  • 每次我们进行更改时,我们都会停止 httpd 服务器,然后重新启动它
  • 我们甚至尝试重新启动服务器

无论我们尝试过什么,会话都存储在磁盘上的 /var/lib/php/sessions 中。是否有我遗漏的东西,或者这是一个已知的 5.4 或 AWS 问题?

0 投票
0 回答
563 浏览

python - 使用 Ketama 使用多个客户端以一致的密钥分配访问 memcache

我在使用不同的 Python 客户端从内存缓存服务器读取数据时遇到问题,然后是用于将值写入内存缓存的那个。

我有一个使用 'ketama' 行为使用 pylibmc 写入缓存的进程。我有一个不同的服务,它从 Tornado IOLoop 异步读取 memcache。我已经定制了tornado-memcache以使用python-ketama模块查找服务器,该模块只是通用 C 库 libketama 的包装器。

相关pylibmc客户端初始化代码:

有没有人做过类似的事情(多个客户)?似乎两个客户端使用的哈希连续体非常不同,或者密钥的哈希/检索方式不同(两个客户端都应该使用 md5)。

编辑: 我已经编写了测试以确认这是一个连续问题。

0 投票
1 回答
741 浏览

php - Memcached 中短超时的性能开销

我想知道 memcached 中的短超时(60 秒)是否会对性能产生任何负面影响,VS 更长的超时,但忽略返回的值(如果它是在 60 秒前存储的)。

有很多缓存未命中(如果该项目已被删除)会对性能产生影响吗?

快速说明:如果缓存未命中,我不会重新设置值,只是检查它是否存在

示例场景:

考虑在您的网站上,您希望防止双重操作的情况(例如,在您的网站上单击两次付款按钮,这会注册两次付款。在我们的案例中,我们不处理付款)。

一个简单的技巧是将用户操作在 Memcached 中保留一小段时间——当然有更好的方法可以做到这一点——并检查在最后几秒钟内是否进行了相同的调用。

现在,您可以将缓存设置为短时间,然后检查缓存中是否存在用户的相同操作。或者,将last_user_action缓存设置很长一段时间,以及操作的时间,应用程序可以根据预期的时间段检查时间。

短期的警告是有很多缓存删除(过期键)和很多缓存未命中(因为项目已被删除)。更长的时间只会使用更多的内存。

所以,我想知道大量删除(过期元素)和缓存未命中的开销。

0 投票
0 回答
1415 浏览

php - Memcached / Memcache 键未过期

似乎 Memcached 的数据按预期过期,但密钥本身永不过期。为什么值为零后键仍然存在?当我运行此代码时:

取自http://docs.phalconphp.com/en/latest/api/Phalcon_Cache_Backend_Memcache.html

我可以成功地将数组保存在 $myNewRandomKey 键下。然后我在 30 秒超时后运行此代码:

并看到键仍然存在,尽管数据为 NULL,但在超时到期之前已填充该键。这对我来说似乎只对了一半。钥匙也应该已经清除了。

但是,如果我运行 $cache->delete($myNewRandomKey); 密钥将完全擦除。不一致!

底线:如果密钥没有过期或者 memcached 有问题,那么它们会随着时间的推移而增长和增长,直到导致另一种类型的头痛——系统管理员的头痛?

这些是版本,但我希望这与问题无关,并且我的期望是错误的。

向所有 SO'ers 干杯!

SL