gpt4 book ai didi

php - Memcached/XCache 缓存 SQL 结果?

转载 作者:行者123 更新时间:2023-11-29 14:11:42 26 4
gpt4 key购买 nike

我刚刚为社交网站设计了一个管理控制台。我的老板现在希望我缓存构建这些结果的多个 MySQL 查询的结果(24 小时)。该站点使用 Memcached(带有 Wordpress W3 总缓存)和 XCache。我想知道执行此操作的最佳方法是什么。

这是一个此类查询的示例以及我如何获取结果(基本上我返回用户的汇总统计信息,这意味着我的结果相当简单,例如:

//users who registered in last 365 days
$users_reg_365 = "select ID
from wp_users
where user_registered > NOW() - interval 365 day";

然后使用wpdb查询类来获取结果:

$users_reg_365 = $wpdb->get_results($users_reg_365);

然后在仪表板中显示结果:

<li><?php echo "Total users who registered within last 365 days: <span class='sqlresult'>" . sizeof($users_reg_365) . "</span>"; ?></li>

我对 Memcached/XCache 的理解是它基本上存储字符串,所以只缓存 sizeof($users_reg_365) 有意义吗?

最后一个问题是我们的 Wordpress 站点使用 W3 总缓存,它利用了 Memcached,老板要求我不要使用 Memcached,而是使用 XCache,但我发现文档有点困惑。解决这个问题的最佳方法是什么? SQL 本身是否可以被告知“记住”某些像这样的查询,或者内存缓存是可行的方法?

谢谢!

最佳答案

您可以在此处找到有关两者差异的更多信息: Difference between Memcache, APC, XCache and other alternatives I've not heard of

举个例子

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

// cache 24hrs
$cache_expire = 86400;


// users is your key
$users_reg_365 = $m->get('users_reg_365');
if (empty($users_reg_365)) {
$users_reg_365 = "select ID from wp_users where user_registered > NOW() - interval 365 day";
$m->set('users_reg_365', $cache_expire);
}

如果您需要在半夜精确刷新缓存,请更改 $cache_expire 的值。

您可以引用memcached的完整引用: http://www.php.net/manual/en/memcached.get.php

关于php - Memcached/XCache 缓存 SQL 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13409061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com