阅读了一些关于这个主题的内容:
http://www.danga.com/memcached/
我的SQL缓存问题: http://www.petefreitag.com/item/390.cfm
http://framework.zend.com/manual/en/zend.cache.html#zend.cache.introduction
我有一组非常独特(缩小)的查询,我想我可以在当前的FastCGI C API可执行文件(非PHP)中轻松实现一些缓存。
Zend将其框架描述为: 缓存记录通过灵活的ID和标签系统通过后端适配器(File,Sqlite,Memcache ......)存储。
这是如何实现的?
由于同一个查询可以返回不同的结果,如果Table已被更改,我不仅要监视查询,还要监视UPDATE,INSERT和DELETE(现在是MySQL)因为这只发生在我的一个进程中,我可以轻松添加一个语句,在更改表时删除缓存。
客户端只允许SELECT,在这种情况下,我可以散列查询并将它们存储在散列表或btree索引中,同时指向包含结果的文件。
有更好的方法吗?
答案 0 :(得分:1)
噢,伙计,这是个好问题。 作为一名.NET开发人员,我有幸在过去的7年中不必担心这一点。我不必担心,因为.NET实现了一个非常强大的缓存机制来完成你想做的事情。
在中间层或表示层层无法做到这一点?
答案 1 :(得分:1)
.NET对于快速开发来说当然很方便,但它会产生一些不良后果,因为MS会成为聋人的同伴!
我也更愿意开发自己的解决方案,因为我可以根据自己的需要量身定制。我不需要太多复杂,只需要一些机制将入站查询绑定到服务器端的结果集。演示文稿不在客户端,而是存在单独的数据库。请求实际上只是更新客户端数据库,因此在回答您的问题时,客户端缓存已经全部实现。
答案 2 :(得分:0)
正如我想到的那样,我意识到尽管缓存到磁盘的结果更快,但磁盘上的负载会显着增加。在我的情况下,DB不是那么慢的查询,结果集所需的内存是最大的问题,每个结果集最多3MB。这将很快耗尽服务器内存如果我在xfer继续进行的时候将其全部保留下来