Rails 中session存储问题

Rails Session Store

 

session 一直用 FileStore 存储,但是当session存储的东西太多会数据溢出,cookie 的存储的最大值为4k,于是转用 ActiveRecordStore ,这样一方面提高效率,之前的 session 全部以文件形式存储查找慢,用数据建立索引可以加速。另一方面多 server 做 load balance 之后每次请求都可能会在不同的 server 上跳,会出现找不到 session 的情况。这样全部使用统一的 DB 做存储,各个请求之间不共享任何东西,我们也就不用在 web 层和应用层维护任何状态,状态的维护工作被我们放在了一个特定的整合点上,这个叫无共享架构(share-nothing architecture)

Yahoo 这样用 PHP,LiveJournal 这样用 Perl,我们这样用 ROR~ 上面提到的整合点最简单的应该是 ActiveRecordStore,此外还可以用DRb 和 Memcached。

使用 ActiveRecordStore 存储 session 第一步建一张存 session 的表,如果你用了 migration,直接rake db:sessions:create 就可以了,自己见表的话用以下 sql

create table sessions (
id int(11) not null auto_increment,
sessid varchar(255),
data text,
updated_at datetime default null,
primary key(id),
index session_index (sessid)
);

然后编辑 config/environment.rb 或者 config/environments/production.rb:

config.action_controller.session_store = :active_record_store

一共两步,搞定 ^-^ 重启 server,访问一下,查查数据库,有了!(Whisper 说 mysql 有内存表,会更快)

删除以前的那些文件 session,这个东西可以删除12小时前的session:

find tmp/sessions -name ‘ruby_sess*’ -ctime +12h -delete

数据库 session 表的删法还要在研究一下 TOT

[Update] 定时删除 session 有一个扩展 ActiveRecord::Session 的方法我没搞出来,后来干脆直接在 crontab 里加了一个任务,执行删除 session 的一个脚本

#!/bin/sh
mysql database_name -uuser_name -ppassword << eof
delete from sessions where date_sub(now(), interval 6 hour) > updated_at and bit_length(data) <= 688;
eof

exit 0;

告别手动标注!用ENVI Classic高效搞定高光谱图像语义分割标签(以农业/地物分类为例) 本文详细介绍了如何利用ENVI Classic实现高光谱图像的半自动化智能标注,特别针对农业和地物分类场景。通过光谱特征分析、智能标注技巧和MAT文件转换,显著提升标注效率和质量,助力AI模型训练。 阅读详情

相关推荐

【AirSim+PX4】WSL2上运行PX4连接Airsim步骤

在 Linux 命令行中输入以下命令以添加(或改变)环境变量。注意,此处的 IP 地址应为。4.启动 sln 文件的调试以进入 UE4 编辑器,并在 Linux 中启动 PX4。

m0_53538421的博客 1505

rails on ruby删除指定的session信息实现登录挤出

是tokens表中记录的session.id值,可以通过查询tokens中用户除当前会话session.id其他会话的记录,然后使用delete_session方法删除其他会话,实现清除除了当前会话之外的所有登录状态。这个类中还有其他方法,比如write_session重写session和find_session查询session信息等。是在config/initializers/session_store.rb中配置的,rails版本:5.2.8。ruby版本:2.3.7。

qq_42194566的博客 279

【数据分享】1985-2023年30米CLCD土地覆盖栅格数据分享

总的来说,CLCD 反映了中国快速的城市化进程和一系列生态工程,揭示了气候变化条件下人为对 LC的影响,其在全球变化研究中具有潜在应用价值。最后,通过目视解译的独立样本和第三方测试样本评估CLCD的准确性。特别地,该研究将CLCD产品与目前最先进的30m专题产品包括不透水表面积(ISA)、地表水和森林进行比对,以综合评估CLCD的质量(以下为技术流程图)。数据分类:分为九类用地,该数据包括9种用地类型,分别为:农田、森林、灌木、草原、水域、冰雪、裸地、不透水面、湿地。数据格式:.tif格式。

weixin_61129400的博客 6923

rails用session存储数据

如何使用ActiveRecordStore(数据库)做为session存储方案使用数据库作为session储存方案可以让网站更方便地扩展成多服务器网站。使用方法:1. 运行 rake db:sessions:create2. 将config/environment.rb, uncomment 中下行的注释#去除:       config.action_controller.session_sto

朝着未来勇敢前进 996

电压电流双闭环PFC单相PWM整流

电压电流双闭环PFC单相整流。仿真及代码

xht2403267701的博客 6052

从零开始安装使用opengauss数据库(高斯数据库)

openGauss(高斯数据库)的环境配置、安装方法、基本使用方法

qq_43764807的博客 1万+

Ruby on Rails的session和session存储方案

session:页面间的信息保存手段。使用:赋值    session[:person] = @user读取    Hello #{session[:person]}清除    session[:person] = nil全部清除    reset_sessionRuby on Rails提供的session存储方案:PStore (文件存储,默认方式)ActiveRecordStore(数据库)...

my blog 471

DCDC--控制方式(Control Mode)

DCDC反馈控制方式

网始如芯个人博客 1万+

ruby on rails中的session & cookies整理

一、简介 rails中的session默认存放在cookies中,会话建立时web程序会把cookies发送给客户端浏览器,之后每次客户端提交请求时浏览器都会把cookie的数据一起提交给服务器,用于验证。一般建议将session保存到数据库中,原因是: rails中cookie保存数据大小有限制,一般不能超过4k,否则可能出错。 大型的web服务器一般为了负载平衡会使用几台

tompiking的博客 4656

【开关电源篇】开关电源——只需这三个阶段,从电源小白到维修大神

🔌 该篇为的原创文章跳转目录,小二持续更新跳转链接,尽情关注!

2301_81299416的博客 2390

YOLOv8与Swin Transformer的完美结合:如何提升目标检测的精度与速度

Swin Transformer(Shifted Window Transformer)是一种新型的视觉Transformer架构,采用了局部窗口(Window)和局部窗口偏移(Shifted Window)的策略,极大减少了计算复杂度,同时保持了全局感知能力。局部窗口注意力:每个窗口内的元素进行自注意力计算,减少计算量。窗口偏移:通过在不同层次引入窗口偏移,增强了全局信息的交互。层级设计:通过堆叠多个层次的模块,逐渐捕捉不同尺度的特征。

shrgegrb的博客 2151

Rails项目由Session存储引发的速度问题

在./config/environment.rb中取消下面这个注释: [code="ruby"]config.action_controller.session_store = :active_record_store[/code] 使得Session的存储采用active_record_store方式,测试一个很简单的请求: [code="ruby"]class QuickReCo...

你我皆凡人,生在人世间 108

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Rails3 session应用

开发时遇到需要带参数的页面跳转。可以使用http中get方法直接跟参数的形式去完成这个小问题,但是看着整个url很长很杂,所以想到了session来解决这个问题。在rails3中,session用法不难,难的是要控制session的有效使用时间、存储量大小等后续问题。 1.使用范围   controller和view中可用 2.保存的数据   ◇一般保存会话进行的必要数据,如保存登录用户的

Eric的小屋 3323

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

session store to memcache configure

今天遇到个问题,项目配置为,ruby1.8.7,rails 3.1.3 用到了session,要吧user的信息村到session去,为了偷懒,索性将user的所有信息都扔到了session里面,之后在运行的时候报错了:ActionDispatch::Cookies::CookieOverflow,这是因为rails默认的是将session的存储到cookie里面,又因为cookie对字串的大小...

晗的IT生活 101

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

多机部署rails下的session处理实践

背景:rails部署在多个机器上,如何处理session?如果单机部署那么不用理会这个问题,使用系统默认的session机制既可,如果多机情况下就不一样,处理不当很有可能出现, 用户在一台机器已经登陆,结果下次访问另一台机器,可能就会被迫再次登陆(因为这台机器并没有session数据)。用户只管使用,并不关心你的应用如何部署,所以出现这种情况会让用户很困惑,甚至会造成比较严重的后果。我尝试采用了数...

beifenggo 92

[讨论]谈谈Ruby on Rails的性能问题

关于Ruby/Rails的讨论仍在团结友好而卓有成效地进行着。纯月摘要翻译了一篇“Rail开发中常见的性能问题”,但他对这篇文章有着明显的、无意或有意的误读。在前面列举的5个注意事项中,后3项:3 repeating identical computations during request processing(在处理请求过程中反复做同样的计算操作)4 reading too often

透明思考@优快云 7152

Rails宝典八十四式:Cookie Based Session Store

Rails 2.0将默认使用CookieStore来存储session数据,这符合SNA,很好 如果从Rails 1.x迁移到Rails 2.0,需要这样配置一下: [code] # in environment.rb Rails::Initializer.run do |config| config.action_controller.session = { :sessi...

hideto 165

web开发敏捷之道-应用rails进行敏捷web开发【读书笔记1】

第八章【sessions和浏览器】一节中讲到,如果将sessions存储到数据库中,需要在environment.rb中取消最下面一行的注释: # Use the database for sessions instead of the cookie-based default, # which shouldn't be used to store highly confidenti...

weixin_30466953的博客 132

关于“rails大容量网站部署的性能讨论”的一些想法

Java视线论坛的一篇“[url=http://forum.iteye.com/viewtopic.php?t=20298&start=45&postdays=0&postorder=asc&highlight=]关于rails大容量网站部署的性能讨论[/url]”,讨论了多个服务器的Session共享,其中提到了memcache、session server等词汇。 由于注册时间不到30天...

头脑歪歪 132

Agile Web Development with Rails 3nd Edition学习笔记-把Sessions放进数据库

depot在线商店需要一个能保存用户选购的各种各样的商品的地方,而对于Web程序而言,每个页面和请求的生命周期都是瞬间了,彼此之间没有任何的状态记录。当用户在一个页面选择了一样商品,再去另一个页面选择另一样商品的时候,上一个页面的数据已经荡然无存了。就像狗熊掰苞米,掰一个放在胳肢窝下,再掰一个放在胳肢窝下,之前的那个就没有了。(哈哈!这个比喻也许不那么恰当。 :wink: ) 那么,我们怎么保存...

The Sea of Linux 145

rails错误 ActionDispatch::Cookies::CookieOverflow

1、错误描述,如下图: 2、问题原因: 后来查了一下,cookie的大小有4k的限制,如果超过了4k,rails就会报错:Cookies::CookieOverflow。 3、解决办法: 安装:gem 'activerecord-session_store' 分别执行命令: rails generate active_record:session_migrationrake db:migrate 在项目中的config/initializers/session_store.rb:...

zlzdj的专栏 404
上一篇: RMagick安装问题
下一篇: 图片上传插件 Paperclip
chenbinGood
博客等级 码龄18年 2粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值