我是 Redis 的新手,希望有一个“最佳实践”解决方案来实现与 mysql 数据库中的“用户”表等效的功能,以便在网络应用程序中处理用户。
我会在 Redis 中创建用户 SET 吗?还是每个用户都有一个 SET 的用户数据库?
最佳答案
我的用户标准设置是一个标准键 u:userid 中的序列化对象 - 这个对象在每次请求时都会被检索,并且永远不需要只访问其中一个属性。
您也可以为用户属性使用散列而不是 json,但我的设置包括用作强类型对象的所有内容以及在与客户端不同的服务器上运行的 redis,因此使用 json 可以更轻松地使用通用反序列化和最大限度地减少任何延迟问题。
除了用户对象本身,您还需要为查找用户所需的任何字段创建索引 - 例如,要允许用户使用电子邮件地址登录,您需要一个 key e:电子邮件 => 用户名。散列也可以在这里工作——重要的是你需要 O(1) 的东西来从电子邮件到用户对象。
有时部分用户数据应该有自己的键——例如,关注者列表与 redis 集完美匹配,因此最好以这种形式存储。
关于Redis 新手 - mysql 表的等效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4915052/