如何避免存储太多会话?

时间:2013-03-18 04:36:52

标签: perl session redis session-timeout catalyst

我正在使用Perl Catalyst与Catalyst::Plugin::Session::State::CookieCatalyst::Plugin::Session::Store::Redis。我最多有2,000名用户登录,但我的Redis商店中有超过2百万个密钥。

大多数身份验证都是通过API密钥完成的。我想知道每个API调用是否会创建和存储新会话(API调用中可能没有cookie),或者网站的所有新访问者是否自动创建了会话。

看起来一个解决方案是默认设置一个非常短的过期(几分钟),并在用户通过Web界面登录时覆盖更长的过期时间。

我想知道这是将存储会话数限制到最低限度的最佳方法。

1 个答案:

答案 0 :(得分:2)

Redis Time out就是为了这个目的,除非你有任何特定的紧急用例来阻止你的所有会话到期(我看不到),你应该把它设置为实际时间限制(默认值:300)。

然而,在旧版本的redis中存在问题,所以在测试此功能之前,您需要安装最新的redis来修复它。