服务器端管理刷新令牌的最佳方式



我正在使用redis将其存储在userId:refreshToken中。

但是,此方法会阻止一个用户登录到多个设备。

所以我尝试将其更改为userId_accessToken:refreshToken的格式。

但是,每当access tokenrefresh token发生变化时,此方法都应为del->insert

所以我在两种方法之间争论。

  1. 如上所述将其保存在redis中
  2. 在DB中另存为[id,userId,refreshToken,accessToken,expDate]

在mysql中,我将创建一个cron,它将在expDate之后删除它。在redis中,它将在创建时应用ttl。有什么更好的方法?

我们服务器的内存是3969424。数据库使用rdsmysql

如果还有其他好方法,那也很棒!

我会选择更简单的实现

还有一个想法,你可以使用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秒以上的行。

最新更新