有没有办法在Redis中按密钥的父部分进行搜索?
例如:X:Y = [1,2] and X:Z = [4,6]
两个键都有一个X的关键子部分。
我可以运行某种操作来获取X = [1,2,4,6]
吗?
答案 0 :(得分:2)
Redis没有内置的能力,但您可以使用它来构建它。
是的,你可以根据他们的名字在Redis中搜索密钥,但在性能方面效率很低。有关详细信息,请参阅SCAN
。
更高效的方法是对键进行索引,因此搜索是在子线性时间内完成的。有关指示,请参阅Secondary Indexing with Redis。
一旦检索到密钥的名称,就会显示您希望其值的并集。支持此功能的一种候选数据类型是通过SUNION
command进行的Redis设置。
完全用于扫描/索引,集合和联合的替代方法是对共享相同前缀(“X”)的所有“密钥”使用单个数据类型。 Redis Hash可以为你做到这一点,虽然它不能在其字段上提供等效的union操作,但它可以通过Lua脚本(甚至是应用程序)实现。
除了这两个接近之外,我相信有更多方法可以使用Redis来实现您想要做的事情。选择合适的一个是理解所有要求的问题,但我担心这个问题缺乏信息。