这仅来自一个具有大约20M密钥(没有到期)和大约2G数据的memcached服务器.
将所有键/值对转储到平面文件中的最简单方法是什么?我首先查看了java net.spy.memcached.MemcachedClient,但是这个客户端不支持获取所有密钥(我认为).如果我有一个所有键的列表(我没有),我可以轻松地使用此客户端获取所有值.
我知道我可以使用一些telnet命令获取所有密钥(例如,telnet localhost 11211; stats items; stats cachedump),但我不清楚如何自动执行此操作.
编辑:这是我在我的机器上的玩具memcached服务器上做的工作.它似乎工作但我只在memcached中放了两个键,所以希望这个方法可以扩展好:
shell命令:
sudo yum install memcached
sudo /etc/init.d/memcached restart # maybe unnecessary
sudo yum install php
sudo yum install php-pecl-memcache
sudo service httpd reload
Run Code Online (Sandbox Code Playgroud)
php脚本,基于此:
<?php
$memcache = new Memcache();
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect");
$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');
$items = $memcache->getExtendedStats('items');
foreach($allSlabs as $server => $slabs) {
foreach($slabs AS $slabId => $slabMeta) {
if (!is_int($slabId)) {
continue;
}
$cdump = $memcache->getExtendedStats('cachedump', (int) $slabId, …Run Code Online (Sandbox Code Playgroud) 我想使用python-memcache从memcached服务器导出所有键和值.该模块中没有这样的功能.怎么办呢?
也许需要涉及"套接字"模块的更复杂的东西.
我已经安装了memcache,现在我如何真正查看memcache中的数据?
有没有办法在memcache中看到缓存中存在的数据?
我怎么知道memcache是否将数据存储在其中?
注意:我不想编写任何程序来查看memcache中的数据.基本上,memcache服务器已经安装在我的环境中,它也在缓存数据.但我想知道是否有任何可用的实用程序可以向我显示内存缓存中的缓存数据,或者是否有任何命令可以显示到目前为止缓存的数据.
我们为客户锁定了一些库存,锁定库存的表包含将其锁定的会话ID以及有关客户端的其他信息.当会话到期时,我们想要解锁该库存,以便其他人可以购买它.因为我们在表中注册了session_id(),知道它,有没有办法检查会话在PHP中是否仍然有效?
如果我们使用数据库来保持会话,我们可以检查行是否到那里以及最后一个活动是什么时候,在memcached中我们可以找出会话的密钥并检查它,就像文件会话一样我们可以这样做,找出会话的文件名并检查文件是否存在.
无论你在哪里举行会议,有什么东西可以在任何地方使用吗?
由于我无法在网络中找到任何可靠的程序,一旦板块中的密钥数量超过500k就会检索所有的memcache密钥,我想用PHP编写自己的程序.
然后我意识到有一个原因,为什么所有的程序都没有真正适用于这么多的密钥.
当我用stats cachedump <slab-id> <limit>它读取键时,只返回一定数量的键 - 在我的情况下 - 结束约30k.
我怎样才能得到至少这500k可能在一块板上?
建议使用的所有"帖子"和"答案" memdump都不起作用.他们也有这个限制.
我在用 memcached 1.4.25