我在Memcache中存储临时会话令牌,但效果很好。当用户登录我的应用程序时,他们会显示他们的凭据,并且令牌存储在Memcache中,使用15分钟的TTL并返回给用户。每次用户发出呈现令牌的请求时,其TTL都会被扩展。 Memcache密钥是" user-id- {id}"。这意味着如果用户登录两次,则第一个会话将在替换令牌时失效。
我希望用户能够拥有多个活动令牌。我之所以使用" user-id- {id}"键名而不是随机生成的字符串是因为我想控制用户拥有的活动令牌的数量。如果我给他们随机名称,单个用户可以通过生成数百万个令牌来填充我的Memcache DB。
如何限制他们使用10个有效令牌?我考虑添加一个索引,如" user-id- {id} - {index}"然后迭代1-10以获取索引以查看令牌是否有空的空间。这感觉就像很多工作,并且有一些竞争条件。如果我想继续使用Memcache,是否有更好的选择来实现我的目标?
答案 0 :(得分:0)
保持相同的密钥并存储一组活动会话。如果你这样做,你需要手动管理除第一个条目之外的所有TTL。