Heim >Backend-Entwicklung >PHP-Tutorial >memcache 数据过大,导致$mem->get($key)的结果为bool(false),请问各位兄弟,有什么好的办法,谢谢

memcache 数据过大,导致$mem->get($key)的结果为bool(false),请问各位兄弟,有什么好的办法,谢谢

WBOY
WBOYOriginal
2016-06-23 14:05:531271Durchsuche

select 20000条数据,获取memcache缓存内容,正常显示。


但是 select 25000条数据,获取memcache缓存内容,结果为bool(false);

简单点说,就是搜索结果内容过大,无法生成memcache缓存。

期待各位高手指点,谢谢。


回复讨论(解决方案)

select 25000 确实很大,是想吧memcache当数据库用吧,memcache的值保存在内存中,如果内存不够用就返回false这是我的理解。期待看看高手如何回答。

memcache应该是自动将旧的清理用新的替代。

上代码,没代码你说个锤子

memcache这么用貌似有些疯狂

memcache建议不要超过1M,要不然呵呵

你可以尝试用Redis

memcache应该是自动将旧的清理用新的替代。

上代码,没代码你说个锤子

//连接  
$mem = new Memcache;  
$mem->connect("127.0.0.1", 11211) or die ("Could not connect");  
print_r($mem->getStats());
echo "
"; 
$q="select * from  uploadfile"; //数据有28000条
$key=md5($q);

if(!($datas=$mem->get($key)))
{
echo "Read datas from MySQL
";
$rs=$db_oa->Execute($q);
while(!$rs->EOF)
{
$ss.=$rs->f("fileonsvrname")."
";
$rs->Movenext();
}
$mem->set($key, $ss, 0, 20);  //set 设置无效 (问题所在)
$datas = $mem->get($key);  
}
else
{
echo "Read datas from memcached
";
}
var_dump($datas); //输出结果是(Array ( [pid] => 1612 [uptime] => 21152 [time] => 1366094659 [version] => 1.2.6 [pointer_size] => 32 [curr_items] => 2 [total_items] => 11 [bytes] => 1401127 [curr_connections] => 2 [total_connections] => 39 [connection_structures] => 3 [cmd_get] => 50 [cmd_set] => 11 [get_hits] => 33 [get_misses] => 17 [evictions] => 0 [bytes_read] => 14237871 [bytes_written] => 21454105 [limit_maxbytes] => 67108864 [threads] => 1 )
Read datas from MySQL
bool(false) )

有没有可以帮忙解决问题的答案,谢谢。

期待大牛......

期待大牛......

memcache建议不要超过1M,要不然呵呵

你可以尝试用Redis


不是建设 ,是肯定 ,肯定不能超过1M

保存你的 $ss  看下,是不是超过1M 了 ,

不知道这么做的意义何在
如果只是想加快检索的速度,那么用内存表就是了。ENGINE=MEMORY 
速度至少提高一个人数量级

从 memcache 中检索出需要的内容,可不是一件容易的事情

为什么把这个结果存到memcache里,我就搞不懂了,有必要么????你是想提高啥子效率?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn