【发布时间】:2022-01-09 01:28:38
【问题描述】:
有点好奇,因为我的目标是无状态设置,当出现许多设备访问单个帐户时,有些人如何编写/设置会话处理。
我目前使用的是 Node.JS,但很感谢伪,
这是我的会话当前的样子,ID 是一个唯一值。 (Redis通过KEY存储JSON)
{"cookie": {
"originalMaxAge": null,
"expires": null,
"secure": true,
"httpOnly": true,
"domain": "",
"path": "/",
"sameSite": "strict"
},
"SameSite": "7e5b3108-2939-4b4b-afdc-39ed5dbd00d0",
"loggedin": 1,
"validated": 1,
"username": "Tester12345",
"displayself": 1,
"avatar": "{ \"folder\": \"ad566c0b-aeac-4db8-9f54-36529c99ef15/\", \"filetype\": \".png\" }",
"admin": 0,
"backgroundcolor": "#ffffff",
"namebackgroundcolor": "#000000",
"messagetextcolor": "#5d1414"}
在我有一个用户登录两次不同的设备并决定调整他们的颜色或头像之前,我对此设置没有任何问题;一个会话是最新的,另一个完全丢失。
我尽我所能调用数据库以确保信息在最重要的时候是最新的,但对这个小错误我应该做什么感到好奇?我不想每次请求都调用数据库来获取这些信息,但我认为大多数人无论如何都会这样做?
我可以在脑海中设置一百种不同的方法来解决这个问题,但希望也许处理过这个问题的人对此有一些很好的想法。我只想提高效率,而不是让我的数据库在不需要时努力工作,但我知道会话处理会调用每个请求,因此试图确定最终想法。
对所有想法开放,我上面的例子是一个 JSON 插入 Redis;我愿意改用 MySQL 或其他商店。
【问题讨论】:
-
您是否只是想同步服务器端会话对象,例如快速会话对象?或者您是否尝试同步活动客户端状态,以便如果作为 clientA 登录的 deviceA 将其背景颜色更改为绿色,那么也以 clientA 身份登录的 deviceB 应立即将其设备背景更新为新颜色?
-
后面的场景,如果DeviceA在AccountA上改变颜色;登录到 AccountA 的 DeviceB 也应该知道。想知道有些人在这些情况下会做什么?
标签: mysql node.js session redis