CodeIgniter,使用 Redis 作为会话管理器
Posted
技术标签:
【中文标题】CodeIgniter,使用 Redis 作为会话管理器【英文标题】:CodeIgniter, Using Redis as session manager 【发布时间】:2013-06-06 00:58:10 【问题描述】:来自github的配置声明我需要设置
$config['sess_use_database'] = TRUE;
这是在redis中存储会话数据所必需的。
但是,来自CodeIgniter's guide如果$config['sess_use_database'] = TRUE;
会话类将会话数据存储在DB中。
我想了解,即使我们将 'sess_use_database' 配置设置为 true,如何绕过数据库写入。
其次,该方法需要安装phpredis扩展。
我已经从以下github repository 安装了另一个 CI redis 库。
有人可以帮我配置来自 ericterpstra 的代码,[文件名:ci_sock/part_two/MY_Session.php] 以便它可以使用上面的库,而不是 phpredis?
【问题讨论】:
【参考方案1】: Codeigniter 版本 3 支持Redis 会话
编辑配置文件
$config['sess_driver'] = 'redis'; //enable redis session
$config['sess_save_path'] = 'tcp://localhost:6379'; // redis hostname:port
Official Documentation Redis Driver
【讨论】:
【参考方案2】:如果我没记错的话,phpredis
是 PHP 的 C 扩展,其中 CI redis
库是 redis 客户端的纯 PHP 实现。您可能有可能将 phpredis
作为扩展安装并仍然使用您的 CI redis
库(尽管您可能想转储它,因为它不再维护)。
如果您安装了phpredis
,您只需将php.ini
文件中的默认会话处理程序切换为使用redis,即可绕过整个CodeIgnitor 会话配置问题。
这是来自https://github.com/phpredis/phpredis#php-session-handler的示例:
session.save_handler = redis
session.save_path = "tcp://host1:6379?weight=1, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2"
这将透明地使用您的 redis 存储来存储会话。
【讨论】:
以上是关于CodeIgniter,使用 Redis 作为会话管理器的主要内容,如果未能解决你的问题,请参考以下文章
会话数据问题编号的值没有增加并在 codeigniter 项目中传递