首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis用户管理系统

Redis用户管理系统
EN

Stack Overflow用户
提问于 2013-02-16 12:24:32
回答 2查看 1.5K关注 0票数 3

我正在将我的旧的基于MySQL的用户管理系统转换到Redis,并且遇到了一些问题……

我使用HASH和SET的组合作为系统的基础。

只是一些伪代码

代码语言:javascript
复制
let uid=incr user_id_counter

    hset joe@dom.com user user:uid
    hset user:uid email joe#dom.com
    hset user:uid gender m
    hset user:uid year_of_birth 1972
    hset user:uid fav_band acdc
    sadd maleUsers uid
    sadd born1972Users uid

此时一切都很好,我可以使用sinter进行搜索,例如:

代码语言:javascript
复制
sinter maleUsers born1972
or
sinter femaleUsers born1980

这是假设我为每一年的birh做一个单独的集合。

代码语言:javascript
复制
sad bornXXXX uid

这是我可以忍受的--但我该如何处理最受欢迎的乐队?当然,我不会为所有可能的乐队都做一套?

最终,我希望能够进行详细的搜索,例如,

代码语言:javascript
复制
sinter maleUsers born1980 genreRock genreMetal homeTownSydney

有没有更复杂的方法来进行关系查询?

EN

回答 2

Stack Overflow用户

发布于 2013-02-16 19:07:55

我是Redis的铁杆粉丝。但我担心你的方法是完全错误的。用户凭证的主存储应该仍然是传统的关系型数据库管理系统,坚持使用MySQL是一个很好的方法。

NoSQL数据库,尤其是Redis,是用来做其他事情的。

Redis是基于内存的。是的,您可以将所有内容保存到硬盘驱动器中,但当您的机器启动时,它会加载从硬盘驱动器到内存的所有内容。你的存储空间就是你机器的内存。因此,除非你指望的用户不会太多,否则我不会推荐Redis作为主要的存储来源。您仍然可以利用Redis对您的用户进行二级访问(例如二级缓存),但不能将其作为主要来源。

您可以为您的用户数据库使用基于磁盘的NoSQL数据库(MongoDB、CouchDB、Cassandra和所有这些),这是比Redis更好的选择,但我仍然强烈推荐使用传统的关系型数据库。您希望将最关键的数据保存在基于事务的可靠系统中。

票数 3
EN

Stack Overflow用户

发布于 2013-02-16 18:13:07

但是我该如何处理fav呢?当然,我不会为所有可能的乐队都做一套?

嗯,这正是你应该做的。对于Redis,这种关系由对波段的引用表示,这是用户定义的一部分,并通过与包含对所有用户的引用的波段相关联的集合来表示。

这种关联必须手动保留,但您可以利用多个/EXEC块来保证并发环境中的数据一致性。

有没有更复杂的方法来进行关系查询?

是的,通过使用关系数据库而不是Redis。如果您正在寻找关系查询,为什么不使用RDBMS呢?MySQL有什么问题?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14906928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档