PHP SQL PDO Memcached未在缓存中存储结果

PHP SQL PDO Memcached未在缓存中存储结果,php,sql,pdo,memcached,Php,Sql,Pdo,Memcached,寻求一些建议。 试图返回一个长查询,其中包含65000个左右的结果,这在服务器端会引起很多攻击。返回所有数据大约需要16秒。 这就是我目前所拥有的。 它返回查询结果,但似乎从未存储在Memcached中。 如果我打印$cached_数据,它总是显示false。多谢各位 <?php header('Content-Type: application/json'); include('pdo.php'); $memcache = new Memcache(); $memcache->ad

寻求一些建议。 试图返回一个长查询,其中包含65000个左右的结果,这在服务器端会引起很多攻击。返回所有数据大约需要16秒。 这就是我目前所拥有的。 它返回查询结果,但似乎从未存储在Memcached中。 如果我打印$cached_数据,它总是显示false。多谢各位

<?php
header('Content-Type: application/json');
include('pdo.php');
$memcache = new Memcache();
$memcache->addServer("127.0.0.1", 11211);
$query = "SELECT TOP 5000 Snumber,Number,Name,Status,dials,Size,Y04,Y05,PD0405,Y06,PD0506,Y07,PD0607,Y08,PD0708,Y09,PD0809,Y10,PD0910,Y11,PD1011,Y12,PD1112,Y13,PD1213,Y14,PD1314,Y15,PD1415,Y16,PD1516,Y17,PD1617,Y18,PD1718,Y19,PD1819,Y20,PD1920 FROM table ORDER BY Snumber";
$key = md5($query);
$cached_data = $memcache->get($key);
$response = [];

if ($cached_data != null) {
    $result = $cached_data;
} else {

$statement = $conn->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$memcache->set($key, $result);

}
foreach ($result as $row) {
    $output[] = array(
        'Snumber' => $row['Snumber'],
        'MeterNumber' => $row['Number'], 
        'Account' => $row['Name'], 
        'Status' => $row['Status'], 
        'dialsHI' => $row['dials'], 
        'MeterSize' => $row['Size'], 
        'Y04' => $row['Y04'], 
        'Y05' => $row['Y05'], 
        'PD0405' => $row['PD0405'],
        'Y06' => $row['Y06'], 
        'PD0506' => $row['PD0506'],
        'Y07' => $row['Y07'], 
        'PD0607' => $row['PD0607'],
        'Y08' => $row['Y08'], 
        'PD0708' => $row['PD0708'],
        'Y09' => $row['Y09'], 
        'PD0809' => $row['PD0809'],
        'Y10' => $row['Y10'], 
        'PD0910' => $row['PD0910'],
        'Y11' => $row['Y11'], 
        'PD1011' => $row['PD1011'],
        'Y12' => $row['Y12'], 
        'PD1112' => $row['PD1112'],
        'Y13' => $row['Y13'], 
        'PD1213' => $row['PD1213'],
        'Y14' => $row['Y14'], 
        'PD1314' => $row['PD1314'],
        'Y15' => $row['Y15'], 
        'PD1415' => $row['PD1415'],
        'Y16' => $row['Y16'], 
        'PD1516' => $row['PD1516'],
        'Y17' => $row['Y17'], 
        'PD1617' => $row['PD1617'],
        'Y18' => $row['Y18'], 
        'PD1718' => $row['PD1718'],
        'Y19' => $row['Y19'], 
        'PD1819' => $row['PD1819'],
        'Y20' => $row['Y20'], 
        'PD1920' => $row['PD1920']);
}
echo json_encode($output, JSON_PRETTY_PRINT);

可能值得一看memcache数据本身,也许上面的一些东西可能会有所帮助。我做了一些测试,看起来我遇到了一些max records问题。不确定。我把它减少到500张唱片,效果很好。5000美元太多了。我需要做更多的事情。可能要换成别的东西。还不确定。将开始挖掘。每个键的数据大小限制为1MB左右。您可以尝试查看
MEMCACHE\u COMPRESSED
是否有帮助。我可以调整配置中的限制。[/etc/sysconfig/memcached]PORT=“11211”USER=“memcached”MAXCONN=“1024”CACHESIZE=4096”OPTIONS=“-I 128M”