首页 > 解决方案 > sess_expiration = 0 的 Codeigniter 3 Redis 会话驱动程序车库集合

问题描述

我正在阅读 Redis 会话驱动程序的源代码。在 gc 函数中它返回 true 并说 Redis 处理这个。

redis 如何决定何时驱逐 sess_expiration = 0 的数据?当可以删除这些会话时,我不希望 redis 填满。

标签: codeigniterredis

解决方案


我对这个话题不是很熟悉,但我认为:redis 默认遵循特定的策略来管理你的会话。相应地:GC在会话信息之后保存一个默认的过期时间,以供下一个条目使用。这样做时,它会查看其配置(您是否创建了一个表来存储 Session?您应该何时保存它?)。

它使定制这部分成为可能。因此,您可以通过编写自己的处理程序来管理会话。如果需要,您可以将会话信息存储在任何地方,而无需将其带到数据库端(如 cookie)。您还可以设置自己的 Web 服务并从那里管理记住我的信息,这是另一种选择。

我的理解是,如果您将 sess_expiration 设置为 0,它将自行管理。否则,您可以设置一个较短的时间,例如 40 分钟,然后您可以使用 sintakonte 的玉米作业。(我认为没有办法编写自己的 GC,您可以像PK_Session那样自定义会话处理程序)


推荐阅读