Authentication 在Memcache中为用户存储多个会话

Authentication 在Memcache中为用户存储多个会话,authentication,memcached,access-token,Authentication,Memcached,Access Token,我将临时会话令牌存储在Memcache中,效果很好。当用户登录到我的应用程序时,他们会出示他们的凭据,令牌以15分钟的TTL存储在Memcache中,并返回给用户。每次用户请求呈现令牌时,其TTL都会被扩展。Memcache键是“用户id-{id}”。这意味着,如果用户登录两次,其第一个会话将在替换令牌时失效 我希望用户能够拥有多个活动令牌。我之所以使用“user id-{id}”键名而不是随机生成的字符串,是因为我想控制用户拥有的活动令牌的数量。如果我给他们随机命名,一个用户就可以通过生成数百

我将临时会话令牌存储在Memcache中,效果很好。当用户登录到我的应用程序时,他们会出示他们的凭据,令牌以15分钟的TTL存储在Memcache中,并返回给用户。每次用户请求呈现令牌时,其TTL都会被扩展。Memcache键是“用户id-{id}”。这意味着,如果用户登录两次,其第一个会话将在替换令牌时失效

我希望用户能够拥有多个活动令牌。我之所以使用“user id-{id}”键名而不是随机生成的字符串,是因为我想控制用户拥有的活动令牌的数量。如果我给他们随机命名,一个用户就可以通过生成数百万个令牌来填充我的Memcache数据库


我如何限制他们拥有,比如说,10个活动代币?我考虑添加一个像“userid-{id}-{index}”这样的索引,然后对索引进行1-10次迭代,以查看是否有一个空的令牌空间。这感觉像是一个很大的工作,并有一些比赛条件。如果我想继续使用Memcache,是否有更好的方法来实现我的目标?

保留相同的密钥并存储活动会话的集合。如果您这样做,您将需要手动管理除第一个条目以外的所有条目的TTL。

但是,它们将在memcache中共享一个条目,并且不能有单独的TTL是的,很好@william。我应该在我的回答中有所说明。我更新了我的答案。不得不自己担心TTL确实会降低解决方案的吸引力。也就是说,这可能是你能想出的最好办法。