我目前正在运行Django应用程序,SESSION_ENGINE配置为user_sessions.backends.db
(我正在使用this外部库)。 Django自己的内置会话非常棒,但所有数据都隐藏在base64编码数据中。这个库使会话对象像其他ORM对象一样可访问。将会话数据从自定义后端迁移到后端缓存(Django)
我需要删除我对这个库的依赖;将SESSION ENGINE更改为缓存以提升性能。
我的挑战是在不破坏当前会话数据的情况下进行此更改,这就是这个问题的含义。鉴于其性质,图书馆自然不包括db
以外的后端,因此我必须对其进行扩展。
我该如何解决这个问题?例如,在我的脑海中:i)我应该看看这个库保存会话数据的db表的内容,ii)在每次写入时写入将数据保存到高速缓存的功能,iii)转移到读取从缓存(用db作为后备)。
这听起来是对的吗?因为这是一个相当复杂的任务,所以在这个时候,我会很乐意知道任何不该做的事情。提前致谢。
下面是我该怎么做:弄清楚如何将当前会话数据序列化到Django的会话数据中。查看您是否可以将当前会话ID直接映射到Django会话框架使用的密钥。将所有会话数据迁移到新的会话存储。编写一个中间件,将旧会话引擎的Cookie密钥转换为新密码,使其对Django的会话引擎透明。 (如果无法重新使用密钥,请将地图old_key => new_key写入Django的缓存并进行查询)。 – Tiago