gpt4 book ai didi

redis - Redis中如何过滤和区分键

转载 作者:可可西里 更新时间:2023-11-01 11:05:12 24 4
gpt4 key购买 nike

我有一个具有以下结构的 Redis 数据库

Redis estructure

而且,我只想在一个查询中获取第一级键。我的意思是:[EB, HY, LV, LW, MB, NV]

我在 keys * 中考虑过它返回数据库中的每个键。之后,我会遍历所有这些,拆分键并计算每个键的出现次数。但它需要代码,如果可能的话,我当然想在一行中得到想要的结果。

有人知道如何帮助我吗?非常感谢。

最佳答案

首先,正如 Sergio Tulentsev 所提到的,您的 GUI 将冒号解释为执行命名空间。 Redis 本身不会这样做。在 this SO question 中对冒号在 Redis 中的作用进行了很好的讨论。 .

也就是说,您需要编写代码来执行此操作。该代码的编写方式取决于您计划在什么环境中执行此操作以及您的速度和一致性要求是什么。

如果您只是想在本地或开发人员上执行此操作以基本了解您拥有哪些顶级 key ,您可以通过您选择的后端语言 Redis 客户端调用 KEYS * 然后遍历返回的内容以查找所有顶级 namespace 。使用 redis-py 的 Python 示例:

import redis
r = redis.Redis(host='localhost', port=6379, db=0)
top_level_namespaces = set([item.split(':')[0] for item in r.keys('*')])

如果你想在生产中这样做,你必须记住 KEYS * 非常非常慢,并且会阻塞 redis 数据库直到它完成。如果你同意,你可以写一个快速 LUA script使用与我上面的 Python 示例相同的逻辑,以便逻辑在 Redis 服务器上运行,并且您不需要浪费网络时间将所有 key 传输回您的应用程序服务器。

如果 KEYS(*) 对于您的用例来说太慢,并且一致性不是特别重要,您可以使用 SCAN而是迭代结果。

如果 KEYS(*) 太慢并且一致性非常重要,您可以做的最好的事情是在您的应用程序中维护一组辅助的顶级命名空间作为应用程序逻辑,而只是 SMEMBERS 在需要时检索它们。编写和维护应用程序逻辑会很烦人,但这将是最快和最持久的方法。

关于redis - Redis中如何过滤和区分键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34019098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com