我将 MySQL 用于我的主数据库,我在其中保存实际对象。当使用模板渲染对象时,渲染需要大量时间。
因此,我决定缓存生成的 HTML。现在我将缓存存储在文件中,命名适当,并且它的工作速度明显更快。然而,我知道这不是最好的方法。
我需要一个(最好是键值)数据库来存储我的缓存。我不能使用缓存代理,因为我仍然需要处理缓存的 HTML。有没有这样的带有PHP前端的数据库?
编辑: 如果我使用 memcached,并且我缓存了大约一百万页,我会不会耗尽 RAM?
编辑 2: 再说一次,我有 很多 的 HTML 缓存(千兆字节)。
最佳答案
内存缓存
memcached 也是一个真正可靠的产品(更像 redis),用于所有大型站点以保持它们的正常运行。几乎所有活跃的推文(用户获取的)都存储在 memcached 中以获得疯狂的性能。
如果你想更快,你应该在内存中拥有你的事件数据集。但是,是的,如果数据集大于可用内存,则应该(应始终将数据存储在持久数据存储中,因为 memcached 是 volatile 的)将数据存储在持久数据存储中,例如 mysql。当它在内存中不可用时,您将尝试从数据存储中获取它并将其缓存为 memcache 以备将来引用(带有过期 header )。
Redis
我真的很喜欢 redis 因为它是一个具有疯狂性能的高级键值存储
Redis 有一个 VM,因此您不需要单独的持久数据存储。我真的很喜欢 redis 因为所有可用的 commands (power :)?)。 simon willison 的这个 tutorial 展示了(很多)redis 的原始能力。
速度
Redis 的 非常快! , 110000 SETs/second, 81000 GETs/second in an entry level Linux box. Check the benchmarks 。
提交
Redis 的开发更加积极。 8 小时前 antirez(redis) commited 与 memcached 11 月 12 日最新的 commit 对比。
安装Redis
Redis 非常容易安装。它没有依赖关系。您只需要执行:
make
./redis-server redis.conf #start redis
编译redis(真棒:)?)。
安装内存缓存
Memcached 具有依赖项(libevent),这使得 install 变得更加困难。
wget http://memcached.org/latest
tar -zxvf memcached-1.x.x.tar.gz
cd memcached-1.x.x
./configure
make && make test
sudo make install
不完全正确,因为 memcached 具有 libevent 依赖项,并且
./configure
将失败,因为 libevent
丢失。但话又说回来,他们有 packages 很酷,但需要 root
来安装。