我不认为我需要经历并为我的Rails应用程序获取memcached设置,但我想在一些事情上做一些简单的缓存。
使用file_store作为config.cache_store设置足够吗?或者不得不一遍又一遍地访问数据文件,从服务器负载的角度来看,首先会阻止缓存的好处?
或许我真的不能理解file_store和mem_cache_store之间的区别......
答案 0 :(得分:3)
我不认为我需要经历并为我的Rails应用程序获取memcached设置,但我想在一些事情上做一些简单的缓存
然后使用现有数据库存储缓存的项目。 (您正在使用数据库,对吗?)
memcached只是一个快速但愚蠢的数据库。如果您不需要“快速”部分(*),那么不要引入额外的复杂性,不一致性和单独缓存层的开销。
带有file_store的memcache是一个愚蠢但不是很快的数据库,因此对于除兼容性/测试之外的任何人都没什么用处。(*:实际上,大多数网站都没有。当你无法优化你的模式,对常见查询进行非规范化处理或者预先计算复杂的操作时,Memcache应该是最后的选择。这不是普通的网络应用程序应该考虑对可伸缩性至关重要。)
答案 1 :(得分:0)
file_store将缓存文件系统中的文件。
如果该文件系统对您的Web服务器是本地的,那么显然,它只与该特定Web服务器相关,因此当一个服务器上存在缓存实体而不存在另一个服务器时,您将失去缓存命中率。
您有多少个网络服务器? 2? 10? 100?
用于缓存的file_store无法正确扩展,并会降低共享存储(例如memcached存储)的命中率。
使用memcached的目的是使一个Web服务器池可以访问单个缓存(即使它可以在多个物理服务器上拆分)。使用file_store不会(除非它是一个网络文件系统,而且几乎肯定会遇到自己的问题)。
始终测量任何缓存的缓存命中率;如果你没有获得高命中率,那么它通常是不值得的。在监控过程中,请务必随着时间推移。