首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP缓存机制

PHP缓存机制
EN

Stack Overflow用户
提问于 2017-11-08 19:49:09
回答 2查看 1.4K关注 0票数 0

我在做一个需要缓存系统的程序。所以描述是我得到了一个mysql数据库,它有4列,'mac','src',' username ',' main‘,其中mac,src,username是主表中的键/值和外键。它将首先插入到这3个元素中,并将它们的ID放入main中。我得到的主表的数据大约是18m,而这3个表的数据大约是2m。我不想每次需要在main中插入时都使用select,所以我使用一个数组来缓存它们。$hash= ['mac'=>[],'src'=>[],'username'=>[]];并像这样存储'n获取数据:$hash'mac';

当散列数据的goo超过500k时,这种方法的性能很差;那么有没有更好的方法呢?

PS:我得到了与nodeJS相同的东西,我使用了一个名为哈希表的npm模块,性能大约是每4m插入10k。我读过有关php数组的文章,发现它们是哈希表,但现在它做同样的工作要慢得多,因为只需要1k,至少需要5分钟;

EN

回答 2

Stack Overflow用户

发布于 2017-11-08 21:05:56

假设您在Linux服务器上。请参阅:Creating a RAM disk有了RAM盘后,使用mac地址的sha1()散列将每个ID缓存为一个文件。RAM磁盘文件就是RAM;也就是内存中的永久缓存。

代码语言:javascript
运行
复制
<?php
$mac   = '54:52:00:27:e4:91';
$cache = '/path/to/ramdisk/'.sha1($mac);

if (is_file($cache)) { // Cached already?
    $ID = file_get_contents($cache); // From the cache.
} else {
    // Run SQL query here and get the $ID.

    // Now cache the $ID.
    file_put_contents($cache, $ID); // Cache it.
}
// Now do your insert here.

PHP磁盘允许你使用中的文件系统包装器,比如file_get_contents()file_put_contents()来读/写

要考虑的其他更强大的替代方案:

票数 2
EN

Stack Overflow用户

发布于 2018-06-11 01:42:22

你可以使用PHP超级缓存,它非常简单,比Reddis,Memcache等更快

代码语言:javascript
运行
复制
require __DIR__.'/vendor/autoload.php';

use SuperCache\SuperCache as sCache;

//Saving cache value with a key
// sCache::cache('<key>')->set('<value>');
sCache::cache('myKey')->set('Key_value');

//Retrieving cache value with a key
echo sCache::cache('myKey')->get();

https://packagist.org/packages/smart-php/super-cache

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47178955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档