q666123 发表于 2017-4-15 08:54:58

session store to memcache configure

今天遇到个问题,项目配置为,ruby1.8.7,rails 3.1.3用到了session,要吧user的信息村到session去,为了偷懒,索性将user的所有信息都扔到了session里面,之后在运行的时候报错了:ActionDispatch::Cookies::CookieOverflow,这是因为rails默认的是将session的存储到cookie里面,又因为cookie对字串的大小限制为4k,当session内存储的信息大于4k的时候就会报这个错误,关于session信息的存储,网上有很多解决方案:

Cookie (default)
PStore
ActiveRecordStore
DRbStore
FileStore
MemoryStore


在这里说下将session存储到memcached,在rails3中,将下面的配置信息添加到config/application.rb文件中

require 'memcache'
memcache_options = {
   :compression => true,
   :debug => false,
   :namespace => "cha_mem",
   :readonly => false,
   :urlencode => true
}

memcache_servers = ['localhost:11211']
cache_params = *(.flatten)
#
SESSION_CACHE = MemCache.new *cache_params

之后再在该文件的底部加上:

config.session_store = {
:key         => '_ImNet',
:secret   =>'81b83630687cb1049549ee12b8579c063985d6089702ef46c',
:cache       => SESSION_CACHE,
:expires   => 3600*24*7
}

注意:in rails2The session_store was configured in ActionController::Base.session, and that is now(inrails 3) moved to Rails.application.config.session_store
页: [1]
查看完整版本: session store to memcache configure