gpt4 book ai didi

mysql - 懒加载缓存机制

转载 作者:可可西里 更新时间:2023-11-01 11:45:21 26 4
gpt4 key购买 nike

我正在尝试为我的项目构建“智能”缓存机制。关于项目的简短说明:它是社交网络,主要是读取密集型,另外还有到 nodejs 的 websocket 连接用于一些实时的事情——例如聊天。

像这样构建缓存机制是不是一个好方法?使用这种方法我们得到了哪些优缺点?

function loadUser($id) {
$user_key = 'user_'.$id;

if( $user = Zend_Registry::get($user_key)) ) {
return $user;
}
elseif( $user = loadFromRedis($user_key) ) {
Zend_Registry::set($user_key, $user);
}
else {
$user = loadFromMysql($user_key)
setToRedis($user_key, $user);
setKeyExpire(30);
Zend_Registry::set($user_key, $user);
}

return $user;
}

最佳答案

我认为这不是最好的方法,因为 Zend 增加了很多开销(如果你缓存是因为你想提升你的应用程序)。

在这个网站上有许多解释 Zend 开销的基准(以及与其他框架的比较):http://www.ruilog.com/blog/view/b6f0e42cf705.html

在我的代码中,我倾向于使用我自己的通用模型类,使用与其连接器相关的模型(MysqlModel、MongoModel、CassandraModel...)扩展它,并使用与实体直接相关的类(UserModel、ArticleModel)扩展这些类, ...) 并在 Model 类中编写缓存处理代码,以在整个模型集中重用它。

基本方法:readCache、writeCache、deleteCache。您可以将远程缓存(如 memcached 或 redis)与本地缓存(如 xcache 或 apc)结合使用,以减少净开销。但我建议仅在某个标志为真时才使用本地缓存,而不是默认使用。

关于mysql - 懒加载缓存机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12283623/

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