我正在使用redis
将其存储在userId
:refreshToken
中。
但是,此方法会阻止一个用户登录到多个设备。
所以我尝试将其更改为userId_accessToken
:refreshToken
的格式。
但是,每当access token
或refresh token
发生变化时,此方法都应为del->insert
。
所以我在两种方法之间争论。
- 如上所述将其保存在redis中
- 在DB中另存为[id,userId,refreshToken,accessToken,expDate]
在mysql中,我将创建一个cron
,它将在expDate之后删除它。在redis中,它将在创建时应用ttl
。有什么更好的方法?
我们服务器的内存是3969424。数据库使用rds
和mysql
。
如果还有其他好方法,那也很棒!
我会选择更简单的实现
还有一个想法,你可以使用MyRocks引擎自动删除旧密钥
MyRocks ttl
CREATE TABLE t1 (a INT, b INT, c INT, PRIMARY KEY (a), KEY(b)) ENGINE=ROCKSDB COMMENT "ttl_duration=3600;";
在上面的示例中,我们将ttl_duration设置为3600,这意味着我们希望从数据库中删除3600秒以上的行。