标签: libmemcached

使用pip安装pylibmc时出错

您好,当我尝试使用pip在OSX Lion上安装pylibmc时出现以下错误:

./_pylibmcmodule.h:42:10: fatal error: 'libmemcached/memcached.h' file not found

#include <libmemcached/memcached.h>

         ^

1 error generated.

error: command 'clang' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题的任何线索?

python memcached osx-lion libmemcached

63
推荐指数
6
解决办法
2万
查看次数

在Ubuntu上安装pylibmc

跑步时

pip install pylibmc
Run Code Online (Sandbox Code Playgroud)

在Ubuntu上,我收到以下错误:

_pylibmcmodule.h:42:36: fatal error: libmemcached/memcached.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

python ubuntu memcached pip libmemcached

33
推荐指数
2
解决办法
1万
查看次数

在Heroku w/Django上Memcached:无法安装pylibmc/memcacheify

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

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

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

-----> Heroku receiving push
-----> Fetching custom buildpack... done
-----> Python app detected
-----> Preparing Python interpreter (2.7.2)
-----> Creating Virtualenv version 1.7.2
 !     CLEAN_VIRTUALENV set, rebuilding virtualenv.
       Running virtualenv with interpreter /usr/local/bin/python2.7
       New python executable in .heroku/venv/bin/python2.7
       Not overwriting existing python script .heroku/venv/bin/python (you must
use .heroku/venv/bin/python2.7)
       Installing         distribute..................................................................................................................................................................................................done.
   Installing pip................done.
-----> Activating virtualenv
-----> Installing dependencies using pip version 1.1
       Requirement already satisfied (use --upgrade to upgrade): Django==1.4 in …
Run Code Online (Sandbox Code Playgroud)

django memcached heroku libmemcached

15
推荐指数
2
解决办法
6089
查看次数

缓存节点失败的数据不一致

我遇到了一个问题,我的数据库中的数据正在恢复到旧状态.我想我已经把问题缩小到了这种情况.

想象一下两次购买的顺序如下:

  • 所有缓存节点都在工作
  • 用户登录(他们的数据从数据库中提取并存储在memcached中)
  • 缓存节点关闭
  • 用户继续浏览(因为它们的数据无法在缓存中找到,所以它从数据库中提取并存储在memcached中)
  • 用户执行一些转换其记录的操作[例如升级](他们的记录在缓存和数据库中更新)
  • 缓存节点重新启动
  • 我们再次从缓存中提取用户的数据,它来自之前关闭的原始缓存节点
  • 现在我们遇到了一个问题:缓存中的节点已经过时了!
  • 用户进行另一个转换其记录的操作
  • 这保存在缓存和数据库中,但由于它基于过时的记录,它会踩踏上一次更改并有效地还原它

我们现在丢失了数据,因为数据库记录被重写了部分过时的信息.

如何使用持久连接的PHP5和libmemcached来防止这种情况?我想我想要的是缓存节点根本不进行故障转移; 它应该只是无法读取和写入该节点,但不能从池中删除它,以便我不会得到重复的记录.

当节点出现故障时,这将使我的数据库上的负载增加1/n(其中n是缓存节点的总数),但最好是数据不一致.

不幸的是,我无法理解应该更改哪些设置以获得此行为.

php memcached caching libmemcached

7
推荐指数
1
解决办法
173
查看次数

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脚本如下所示:

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

$key = "key_" . uniqid();
$memcached = new Memcached( 'persistent' );
$memcached->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
$memcached->setOption(Memcached::OPT_RECV_TIMEOUT, 1000);
$memcached->setOption(Memcached::OPT_SEND_TIMEOUT, 3000);
$memcached->setOption(Memcached::OPT_TCP_NODELAY, true);
$memcached->setOption(Memcached::OPT_PREFIX_KEY, 'persistent');

if( !count($memcached->getServerList() ) )
{
    $memcached->addServer( 'localhost', 11211 );
}
$memcached->set($key, 'value');
$value = $memcached->get($key);

print_r( $memcached->getStats() );
?>
Run Code Online (Sandbox Code Playgroud)

在触发脚本时,我在输出中看到没有添加服务器,仅在超时期限之后.

Array ( [@?qVG:11211] => Array ( [pid] => 3728 [uptime] => 73 [threads] => 4 [time] => 1343813688 [pointer_size] => …
Run Code Online (Sandbox Code Playgroud)

php memcached persistent persistent-connection libmemcached

6
推荐指数
1
解决办法
3923
查看次数

PHP Memcached总是返回0

memcache(安装在php5上)和memcached(通过libmemcached安装在php7.2上)都连接到同一个memcached daemon/server.

Memcache::get完全正常,并按照我的期望获取数据.但是当我这样做时Memcached::get,它总是返回0.

我已经检查过使用这两个扩展时我已经压缩了.我也尝试在Memcached::OPT_BINARY_PROTOCOLfor 之间切换memcached,它仍然产生相同的null结果.

有趣的是,当我使用memcached扩展添加键/值对并使用相同的键检索时,我得到了我添加的正确/正确的值.

我现在无能为力,因为它不适用于已经存储在memcached服务器中的数据.

编辑1:我确实telnet到我的memcached服务器,并检查它实际上有值.另外,我检查了返回的结果代码Memcached::getResultCode是不是任何一种失败.

编辑2:我可能会进一步缩小范围.我注意到,当我["key1" => "value1"]memcache-php5脚本中保存时,它会正确地存储和检索数据.但是当我尝试使用memcached-php7.1脚本检索相同的数据时,它返回0.

之后,我使用telnet从memcached服务器中删除了密钥"key1"的数据.然后我["key1" => "value1"]使用memcached-php7.1脚本保存,它可以正确检索数据.但是当尝试使用memcache-php5脚本检索它时,它会返回一些序列化数据"a:1:{s:4:\"key1\";s:6:\"value1\";}"(这是json_encoded输出)

因此,为了升级,我可能必须删除/刷新所有内容并使用memcached扩展在memcached服务器中重新创建条目.

PS:我知道这两个PHP扩展之间的差异.我已经阅读了关于这个问题的所有评论,不是我的重复.

php memcached libmemcached

6
推荐指数
1
解决办法
596
查看次数

libmemcached-1.0.8在ubuntu lucid中失败

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

sudo wget http://download.tangent.org/libmemcached-1.0.8.tar.gz
sudo ./configure -prefix=/usr
sudo make
Run Code Online (Sandbox Code Playgroud)

make命令导致此错误

In file included from memcached/assoc.c:14:
memcached/memcached.h:18:19: error: event.h: No such file or directory

    In file included from memcached/assoc.c:14:
    memcached/memcached.h:358: error: field ‘notify_event’ has incomplete type
    memcached/memcached.h:380: error: field ‘event’ has incomplete type
    make[1]: *** [memcached/memcached_memcached-assoc.o] Error 1
    make[1]: Leaving directory `/usr/local/src/libmemcached-1.0.8'
    make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

我已经安装了memcached

sudo apt-get install memcached
Run Code Online (Sandbox Code Playgroud)

我尝试使用whereis memcached ..显示,检查memcached的位置

memcached: /usr/bin/memcached /etc/memcached.conf /usr/include/memcached /usr/share/memcached /usr/share/man/man1/memcached.1.gz
Run Code Online (Sandbox Code Playgroud)

谁能告诉我应该怎样做才能正确制作和安装这个库?

编辑:

根据@sarnold的建议,我用过

sudo apt-get install …
Run Code Online (Sandbox Code Playgroud)

ubuntu memcached libmemcached

5
推荐指数
1
解决办法
5825
查看次数

如何在ubuntu 10.04中为django框架安装libmemcached

我安装了libmemcached 0,37和ln -s /usr/local/lib/libmemcached.so.2 /usr/lib/libmemcached.so.2

但是当我运行manage.py时它仍然返回
import _pylibmc RuntimeError:pylibmc需要> = libmemcached 0.32,用0.31编译

我尝试安装较新的libmemcached,但他们没有文件libmemcached.so.2

python django libmemcached

5
推荐指数
2
解决办法
9902
查看次数

加载批量数据的正确方法

我正在尝试将大量数据加载到 memcachedb 中。我正在 MySQL 数据库上运行一些查询,我想将这些查询的结果存储在 memcachedb 中,以便以后轻松访问。

目前,我只是使用简单的 set 命令将结果存储在 memcachedb 中,但由于这些结果有数十亿个,将它们一一存储在循环中是非常低效且耗时的。所以,我想知道是否有更好的方法将数据加载到memcachedb中?就像传统RDMS中的数据导入向导

我正在使用 pylibmc 连接到 memcachedb。

python memcachedb libmemcached

5
推荐指数
1
解决办法
726
查看次数

安装PECL Memcached错误

我按照以下步骤在我的Centos Server中安装PECL memcached,总是出错.

第一.安装libmemcached

cd /opt
wget http://launchpad.net/libmemcached/1.0/0.40a/+download/libmemcached-0.40.tar.gz
tar -xzvf libmemcached-0.40.tar.gz
cd libmemcached-0.40
./configure
make
make install
Run Code Online (Sandbox Code Playgroud)

其次,安装PECL memcached

cd /opt
pecl download memcached-1.0.2
tar zxvf memcached-1.0.2.tgz
cd memcached-1.0.2
phpize
./configure --with-libmemcached-dir=/opt/libmemcached-0.40/libmemcached
Run Code Online (Sandbox Code Playgroud)

我总是有错误

checking for memcached igbinary support... disabled
configure: error: Can't find libmemcached headers under "/opt/libmemcached-0.40/libmemcached"
Run Code Online (Sandbox Code Playgroud)

实际上memcached.h档案是/opt/libmemcached-0.40/libmemcached擅自的.

请指教.

php memcached pecl libmemcached

4
推荐指数
1
解决办法
2万
查看次数