ruby - Redis 搜索具有值的键

标签 ruby redis redis-rails

如何在 Ruby 中搜索具有值的键?例如获取值为“somevalue”的所有 KEYS。

我的 key 是

"xyz"=> {:status=> "connected", :topic=> "ABC"

"PQR"=> {:status=> "connected", :topic=> "ABC"}

现在我需要找到主题为“ABC”的所有 KEYS

最佳答案

无论使用何种编程语言,要有效地执行此操作,您都需要维护一个将某些值映射到键名的“索引”键。为此使用 Set 或 Sorted Set 是您通常应该做的 - 即向其中添加新键名称并根据它们的值删除它们 - 并在您想要“搜索”时获取该键的内容。

有一些库(即 gems)可以提供这种随时可用的功能 - 查看最优秀的 Ohm在你的情况下。

编辑

My keys are xyz => {:status=> "connected", :topic=> "ABC"} PQR => {:status=> "connected", :topic=> "ABC"} Now I need to find all the KEYS where topic is "ABC"

我会将 xyz 的值存储为字符串或哈希(取决于我是否需要更新/读取它的一部分)。然后我将 SADD topic:ABC xyz 并对其执行 SMEMBERSSSCAN 以获取具有该主题的所有键的名称。当我 DEL 它的键时,我也会尝试记住 SREM 主题中的相关成员:ABC...

关于ruby - Redis 搜索具有值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32137880/

相关文章:

ruby-on-rails - Rails 在不使用 URL 中的括号的情况下解析数组查询参数的标准方法?

ruby-on-rails - 当解析的 URL 在浏览器中正常工作时,为什么 OpenURI 返回 404?

ruby - 有没有办法在 ruby​​ 中重新定义 []=+

ruby-on-rails - 使用 redis-rails 作为 session 存储安全吗?

ruby-on-rails - 将 Paperclip 与 rails-redis 一起使用时为 "IOError - closed stream"

ruby-on-rails - 尝试按投票排序时出错(act_as_votable gem)

java - Java 相对于 Ruby/JRuby 的优势

django - 我在使用 Celery、Redis 和 Django 时遇到问题

php - Laravel 队列和作业类的更改