ruby-on-rails - 为什么Rails.cache不是线程安全的?

标签 ruby-on-rails caching ruby-on-rails-2

我知道Rails.cacheActiveSupport::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/

相关文章:

ruby-on-rails - 将 .csv 文件保存到无法识别 to_hash 方法的数据库

mysql - Rails Query 选择最新记录的最佳方法

javascript - d3/dc.js - 如何创建堆叠条形图,同时告诉 crossfilter 将数组中的元素视为单独的记录?

ruby-on-rails - 使用 Kaminari 过滤分页

javascript - 顶部栏下拉菜单不适用于 Rails 4.1 和 Zurb Foundation 5

ruby-on-rails - 如何使用Rails i18n后备功能

php - 如何保持memcache与mysql同步?

ruby-on-rails - 如何将参数从我的新方法传递到 Rails 中的创建方法?

sql - 查询数据的缓存策略

java - Ignite C++ 和缓存亲和性