在redis中缓存唯一的电子邮件

时间:2016-03-12 22:15:30

标签: php caching redis

所以我将Redis添加到现有项目中,我希望像这样缓存系统中的每个用户:

'sample@sample.com' => '101'

其中101是用户主键字段。 我需要此功能,以便当用户在网站上注册时,我们可以非常快速地检查缓存以查看此电子邮件地址是否已属于另一个用户。 我们也可以在用户更改其帐户的电子邮件地址时使用此功能,甚至在登录时,当用户提供其登录详细信息时,我们只需检查缓存以查看他们是否提供了唯一的电子邮件地址,然后是值(在这种情况下为101)将指向我们在users表中的行(也是缓存)。

我只是想知道在redis中存储它的最佳方法是什么。我应该只使用这样的密钥:

set sample@sample.com 101

或者使用像这样的哈希映射更有意义:

hset sample@sample.com id 101

还是有其他方法吗? 我基本上只需要一种非常有效的查询电子邮件地址的方法,并获取用户ID(如果已存在)或null(如果电子邮件地址不在系统中)。

1 个答案:

答案 0 :(得分:0)

正如您所说,您想将Redis用作缓存,因此电子邮件> ID不会永远存在于那里? 在临时缓存的情况下,您应该使用SETEX - SET的版本到期(以下示例中为10秒)。

setex sample@exanple.com 10 101

不要忘记在需要时刷新过期时间(以下示例为10秒):

expire sample@exanple.com 10

只有当你想在缓存中保留比普通整数或字符串ID更复杂的数据时,才使用HSET代替SET。