rails使用memcache缓存session

来源:互联网 发布:c语言小程序100例 编辑:程序博客网 时间:2024/06/06 17:34
 
 前提条件:安装了memcache server以及rails的客户端memcache-client
 
修改environment.rb:
找到config.action_controller.session_store = :active_record_store改为
config.action_controller.session_store = :active_record_store
 
然后再最后加上:
memcache_options = {
   :compression => true,
   :debug => false,
   :namespace => "mem-#{RAILS_ENV}",
   :readonly => false,
   :urlencode => false
}
 
memcache_servers = [ '192.168.100.231:11211' ]
 
CACHE = MemCache.new(memcache_options)
CACHE.servers = memcache_servers
ActionController::Base.session_options[:cache] = CACHE
 
修改好后,以debug模式启动memcahce server
/usr/local/weip/memcached-1.2.1/bin/memcached -vv -l 192.168.100.231 -p 11211 -m 256 -P /tmp/memcached.pid -u root
你会看到:
。。。。。。
<3 server listening
 
 
再启动你的rails应用
 
访问页面,你会看到memcache server的确有动静:
。。。。。。。。。。
slab class 40: chunk size 504692 perslab     2
<3 server listening
<6 new client connection
<6 set mem-test:test 0 -1 84
>6 STORED
<6 get mem-test:test
>6 END
<6 set mem-test:test 0 0 84
>6 STORED
<6 get mem-test:test
>6 sending key mem-test:test
>6 END
 
上面示例出现的配置试你的机器而定
 
一个奇怪的问题是:就算你不启动memcache server,你的页面也可以访问成功,那么你的session存在哪?
我查看了/tmp/sessions,没有任何动静,(默认使用文件系统存储sessions时,这个文件夹会一直有文件产生)我想只有可能是存在内存里面了