Php 最快的数据库缓存引擎?

Php 最快的数据库缓存引擎?,php,database,caching,Php,Database,Caching,我使用MySQL作为我的主数据库,在那里我保存了实际的对象。使用模板渲染对象时,渲染会花费大量时间 因此,我决定缓存生成的HTML。现在,我将缓存存储在名为“适当”的文件中,它的工作速度明显加快。不过,我知道这不是最好的办法 我需要一个(最好是键值)数据库来存储缓存。我不能使用缓存代理,因为我仍然需要处理缓存的HTML。有这样一个带有PHP前端的数据库吗 编辑:如果我使用memcached,并且我缓存了大约一百万页,我的内存不是用完了吗 编辑2:再说一遍,我有很多HTML要缓存(千兆字节)。据我

我使用MySQL作为我的主数据库,在那里我保存了实际的对象。使用模板渲染对象时,渲染会花费大量时间

因此,我决定缓存生成的HTML。现在,我将缓存存储在名为“适当”的文件中,它的工作速度明显加快。不过,我知道这不是最好的办法

我需要一个(最好是键值)数据库来存储缓存。我不能使用缓存代理,因为我仍然需要处理缓存的HTML。有这样一个带有PHP前端的数据库吗

编辑:如果我使用memcached,并且我缓存了大约一百万页,我的内存不是用完了吗


编辑2:再说一遍,我有很多HTML要缓存(千兆字节)。

据我所知,使用文件系统实际上是缓存渲染模板的最快方法,而无需将它们存储在内存中。任何数据库都只会增加开销,相比之下,会使整个过程变慢

+

我会使用或。取决于您是否需要在服务器之间共享缓存。Memcached是您连接到的守护进程,APC实际上位于PHP实例内部(稍微快一点)。它们都将缓存存储在内存中,因此速度非常快。

平面文件在“技术上”是最快的,但是如果您正在寻找具有PHP前端的东西,并且只是发出尖叫声,请查看postgres

有关内存缓存,请参阅memcached


*编辑:从您的编辑。。。(是的)。。。如果将该卷缓存在内存中,则会出现问题。查看postgres柱状表查询或准自定义平面文件解决方案。

事实上,在文件中存储缓存确实是最快的方法。但是,如果您真的对将它们放入数据库感兴趣,您可以签出。MongoDB是一个面向文档的数据库,因此没有服务器端连接,这就是它比mysql更快的原因(1.使用php 2.互联网上有很多基准测试)

如果我使用memcached,我缓存大约 一百万页,我不会用完吗 公羊

Memcached memcached也是一个真正可靠的产品(像redis more),用于所有大型网站,以保持其正常运行。几乎所有活跃的tweet(用户获取的)都存储在memcached中,以获得惊人的性能

如果你想快速,你应该在内存中有你的活动数据集。但是,如果数据集比可用内存大,那么您应该(应该始终将数据存储在持久数据存储中,因为memcached是易失的)将数据存储在持久数据存储中,例如mysql。当它在内存中不可用时,您将尝试从数据存储中获取它,并将其缓存为memcache以供将来参考(带有expire头)

雷迪斯 我真的很喜欢它,因为它是一个性能卓越的高级键值存储

Redis是一种高级键值存储。 它类似于memcached,但是 数据集不是易变的,并且 可以是字符串,与中的完全相同 memcached,但也包括列表、集合和 有序集合。所有这些数据类型都可以 被原子操作操纵 要推/弹出元素,请添加/删除 元素,执行服务器端联合, 交集,集合之间的差异, 等等Redis支持不同的 排序能力

Redis有一个独立的数据库,所以您不需要单独的数据存储。我真的很喜欢redis,因为它有所有可用的功能(电源:)?)。西蒙·威利森(simon willison)的这篇文章展示了redis的原始能力(很多)

速度 Redis相当快,110000台/秒,81000台/秒在入门级Linux框中

提交 Redis的开发更加积极。8小时前,安雷兹(redis)最晚在11月12日与memcached进行了对决

安装Redis Redis非常容易安装。它没有依赖性。您只需执行以下操作:

make
./redis-server redis.conf #start redis
编译redis(真棒:)?)

安装Memcached Memcached有依赖项(libevent),这使得它更难被调用

不完全正确,因为memcached具有libevent依赖项,并且如果缺少
libevent
,则
/configure
将失败。但是,他们也有一些很酷的软件,但是需要
root
才能安装

Redis相当快:110000 套/秒

如果速度是一个问题,为什么要使用网络层

根据:

  • InnoDB在峰值时每秒插入43000条记录*
  • TokuDB在峰值时每秒插入34000条记录*
  • G-WAN KV插入…每秒100000000条记录

(*)经过数千次插入后,InnoDB和TokuDB的性能严重下降,当它们的缓存、系统缓存和磁盘控制器缓存已满时,它们将结束对磁盘的写入。有关InnoDB数据库索引的拓扑结构引起的问题的有趣讨论,请参阅PDF(这严重破坏了局部性,而分形拓扑结构的扩展性更好…但仍然不是线性的)。

要将答案澄清为逻辑视图:

  • 平面文件的速度与所使用的存储介质(磁盘或RAM)的速度一样快
  • 在RAM中缓存MRU(最近使用的)项的环境
  • 解决方案对所有位置都有智能/快速哈希索引(SQL系统所依赖的)
这种组合将为您提供您正在寻找的最佳解决方案

为了便于讨论,不管是否使用平面文件(不包括仅内存的解决方案),所有引擎都使用某种形式的平面文件。神奇之处在于知道数据的位置,并通过调整读取将数据拉回到最佳状态。在IBM的80年代,我们使用了固定记录长度的平面文件设计,它没有针对磁盘空间进行优化,而是针对I/O进行了优化。然后索引基于记录长度*ROWID

现在,根据您的需要,您的最终规模表现是引入一个智能组合-我们拥有100多万家公司,每家公司超过10页-1000万
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