我知道Rails.cache
是ActiveSupport::Cache::MemoryStore
,并且不是线程安全的。
我不明白,为什么Rails使用线程不安全的缓存作为默认缓存?为什么不使用ActiveSupport::Cache::SynchronizedMemoryStore
?我认为,在网站上,如果缓存不是线程安全的,则几乎没有用,因为请求不是在一个线程中处理的。
您是否在Web应用程序中使用Rails.cache
?您如何使用它?
最佳答案
Rails中的默认缓存存储为ActiveSupport::Cache::FileStore
,而不是MemoryStore
。
内存存储在实践中用途有限,因为它仅限于单个进程,这使得它对于使用乘客或Mongrel集群部署的Rails应用程序毫无用处,在该集群中,请求是在单独的进程中处理的,而不是在单独的线程中处理的。
对于中小型应用程序,您最好使用默认文件存储。如果需要扩展,请查看ActiveSupport::Cache::MemCacheStore
。
关于ruby-on-rails - 为什么Rails.cache不是线程安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3067636/