我需要将redis中存储的所有会话迁移到mysql,有没有可能呢?
编辑:
工作代码
$redis = Redis::connection();
$keys = $redis->keys('*');
foreach ($keys as $key){
$payload = base64_encode(unserialize($redis->get($key)));
$id = str_replace('prefix:', '', $key);
DB::table('sessions')->insert([
'id'=>$id,
'payload'=>$payload,
'last_activity'=>$date = date('U')
]);
}
1条答案
按热度按时间uxhixvfz1#
因为laravel使用了“symfony”的一些核心组件,所以您可以使用
MigratingSessionHandler
从一个驱动程序迁移到另一个驱动程序的symfony类。它出现在2018年,您的版本可能没有,因此在开始之前,您可能需要将您的版本升级到最新版本之一。本文档提供了它的工作流程。
如果应用程序更改了会话的存储方式,请使用
Symfony\Component\HttpFoundation\Session\Storage\Handler\MigratingSessionHandler
在新旧存储处理程序之间迁移而不丢失会话数据。在开始之前,需要为数据库会话驱动程序创建迁移。官方文档提供了模式