我在 php 中有一个超过 1 mb 的对象。我正在使用 memcache,它允许我存储 1mb 或数据。有谁知道超过 1mb 的数据的任何其他替代方案。我已经读过改变内存缓存来存储更多不是最好的选择。
问问题
4021 次
1 回答
5
您可以使用MultipartCache扩展memcache
以支持高于1MB limit
. 请注意,在 inmemcached 1.4.2
及更高版本中,您可以使用 -I 命令行选项配置支持的最大对象大小。
memcached -I 5m //default: 1mb, min: 1k, max: 128m
MultipartCache只是根据限制集将数据拆分为不同的部分 max 1MB
例子:
$largeSet = range(0, 100000);
$key = "largeSet";
$cache = new MultipartCache();
$cache->setLimit(1024);
$cache->set($key, $largeSet);
系统将拆分数据库size/limit
,575
上面的样本位于不同的位置。
获取这些信息非常容易
$dataFromCache = $cache->get($key);
我们如何确定数据正常?这就是它的hash
用途,但让我们做一个随机测试
for($i = 0; $i < 20; $i ++) {
$rand = mt_rand(0, 100000);
printf("%s - %s\n", $dataFromCache[$rand], assert($dataFromCache[$rand] == $rand) ? "true" : "false");
}
输出
39603 - true
16034 - true
23116 - true
94038 - true
64481 - true
84987 - true
53912 - true
32153 - true
43965 - true
71144 - true
97309 - true
53227 - true
28525 - true
9936 - true
16921 - true
27323 - true
35129 - true
46235 - true
5641 - true
43425 - true
现在让我们看看更敏感的信息......就像一张图片......
$key = "largeImage";
$cache = new MultipartCache();
$cache->addserver("127.0.0.1");
$cache->set($key, file_get_contents("large_image.jpg"));
header("Content-Type: image/jpeg");
echo $cache->get($key);
于 2013-04-12T20:17:33.730 回答