我是Redis的新手,希望有一个“最佳实践”解决方案,可以在mysql数据库中实现等效的“用户”表,以便在Web应用程序中处理用户。
我会在Redis中创建用户SET吗?或者每个用户都有一个SET的用户数据库?
答案 0 :(得分:8)
我对用户的标准设置是标准密钥中的序列化对象u: userid - 在每个请求中检索此对象,并且从不需要只访问其中一个属性。< / p>
你也可以使用散列而不是json作为用户属性,但是我的设置包括被用作强类型对象的所有内容以及在客户端的不同服务器上运行的redis,因此使用json可以更容易地使用泛型反序列化和最小化任何延迟问题。
除了用户对象本身之外,您还需要一个索引来查找用户需要使用的任何字段 - 例如,为了允许用户使用电子邮件地址登录,您需要一个密钥e:电子邮件 =&gt; 用户ID 。哈希也可以在这里工作 - 重要的是你需要O(1)的东西从电子邮件到用户对象。
有时用户数据的某些部分应该有自己的密钥 - 例如,关注者列表与redis集完美匹配,因此最好以该形式存储。
答案 1 :(得分:1)
这实际上取决于您要对应用程序中的用户执行的操作。另一种选择是让每个用户都是它自己的哈希,其中键是每个用户的属性(字段)(firstName,lastName等)。您可以使用您作为ID生成器进行插入的密钥,以及可能用于保存所有用户ID的另一个集合。