【问题标题】:Redis : Is it possible to get filtered data by any field stored in Redis?Redis:是否可以通过存储在 Redis 中的任何字段获取过滤数据?
【发布时间】:2017-06-27 06:38:58
【问题描述】:

我的意思是我有像说这样的行

id name email     emp_id
1  abc  abc@a.com e1e2
2  lmn  lmn@a.com e1e3

在获取mysql后,我将这些数据存储在redis中。

现在假设我想通过某人的电子邮件 id 从 redis 获取数据,例如 abc@a.com,我该怎么做以及我应该在 redis 中使用什么数据类型?

【问题讨论】:

    标签: mysql redis key-value key-value-store nosql


    【解决方案1】:

    这取决于您如何在 redis 中存储数据。如果您经常通过电子邮件访问,那么您可以使用电子邮件作为哈希的键,并使用类似“HGETALL email:abc@a.com”之类的内容直接访问该值。

    【讨论】:

    • 如果我也想按 fname 和 lname 搜索怎么办?说一张表有 50 列,我们不能在一张表上创建 50 个不同的键!任何应用程序中都有超过 100 个表。
    【解决方案2】:

    您需要的是二级索引。您可以使用 redis 数据结构自行实现它。或者,如果您对 redis 4.0(目前处于 RC 阶段)没问题,您可以尝试使用此模块来实现自动化:

    https://github.com/RedisLabsModules/secondary

    使用它,您可以执行以下操作:

    IDX.FROM users_email WHERE "email ='abc@a.com'" HGETALL $
    

    并对匹配 WHERE 条件的键执行 redis 操作($ 被替换为与查询匹配的每个 id 的实际 id)。

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 2011-09-06
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多