将Laravel的session文件迁移到Redis

 

Laravel 默认用文件保存 session ,默认的保存目录是 storage/framework/sessions 。

如果做负载均衡,需要多台服务器共享同一个 session,否则被分配到其它服务器上的用户将会需要重新登录,这时候需要使用 Redis 作为 session 的存储引擎,如何将现有的文件 session 内容导入到 Redis 中去呢?

分析一下 Laravel 在 Redis 存储的方式:

key是“laravel:”加上sessionid,value是序列化的字符串。

于是用一小段python代码将其导入到 Redis:

import redis
import os
import sys

path = 'session文件所在目录'
host = '127.0.0.1'
port = 6379

r = redis.Redis(host=host, port=port)

files = os.listdir(path)
for filename in files:
    content = open(path + filename).read()
    content = 's:%d:"%s";' % (len(content), content)
    r.set('laravel:' + filename, content)
    print r.get('laravel:' + filename)

搞定,收工。