如何在redis搜索中使用通配符

如何在redis搜索中使用通配符,redis,Redis,我有以下散列: HMSET rules:1231231234_11:00_17:00 fw 4444 dm test.abc.com days 'thu, tue, wed' HMSET rules:1231231234_9:00_10:59 fw 2211 dm anothertest.abc.com days 'thu' 我是否可以搜索规则哈希并找到前缀为1234的所有记录? 差不多 HGET rules:1231231234* 或者。。。也许我创建数据的方式是错误的。创建如下数据集的最

我有以下散列:

HMSET rules:1231231234_11:00_17:00 fw 4444 dm test.abc.com days 'thu, tue, wed'
HMSET rules:1231231234_9:00_10:59 fw 2211 dm anothertest.abc.com days 'thu'
我是否可以搜索规则哈希并找到前缀为1234的所有记录? 差不多

HGET rules:1231231234*
或者。。。也许我创建数据的方式是错误的。创建如下数据集的最佳方法是: (json符号)

如何使用这些数据:

我需要根据当前时间找到适用于我的规则。 例如,当我的应用程序收到“处理”pn 1234的请求时,我需要查找该pn编号的所有规则,然后找到与我当前工作日和时间戳匹配的规则

我不介意返回给定pn的所有规则,然后让客户机代码循环以找到正确的规则

编辑1

使用当前创建的数据,我尝试了如下HSCAN:

127.0.0.1:6379[1]> HSCAN rules 0 MATCH 1231231234*
1) "0"
2) (empty list or set)
127.0.0.1:6379[1]> 
编辑2

作为测试,我尝试了这种结构:

HMSET rules:1231231234 tue_11:00_17:00 fw 9999
HMSET rules:1231231234 wed_11:00_17:00 fw 9999
HMSET rules:1231231234 thur_11:00_17:00 fw 9999
HMSET rules:1231231234 thu_9:00_10:59 fw 2222
然后我可以看到主pn的所有规则。使用我的客户端应用程序循环查看结果。。。

您需要使用扫描而不是hscan

结合扫描HGETALL可以实现这一点

1) 扫描并获取与模式匹配的所有值

127.0.0.1:6379> scan 0 match rules:1231231234*
1) "0"
2) 1) "rules:1231231234_11:00_17:00"
   2) "rules:1231231234_9:00_10:59"
2) 然后对应用程序逻辑中的每个键进行迭代,并执行hgetall

127.0.0.1:6379> hgetall rules:1231231234_11:00_17:00
1) "fw"
2) "4444"
3) "dm"
4) "test.abc.com"
5) "days"
6) "thu, tue, wed"
3) 如果它符合您的标准流程

4) 在整个迭代过程中重复相同的步骤


希望这有帮助

您需要使用扫描而不是hscan

结合扫描HGETALL可以实现这一点

1) 扫描并获取与模式匹配的所有值

127.0.0.1:6379> scan 0 match rules:1231231234*
1) "0"
2) 1) "rules:1231231234_11:00_17:00"
   2) "rules:1231231234_9:00_10:59"
2) 然后对应用程序逻辑中的每个键进行迭代,并执行hgetall

127.0.0.1:6379> hgetall rules:1231231234_11:00_17:00
1) "fw"
2) "4444"
3) "dm"
4) "test.abc.com"
5) "days"
6) "thu, tue, wed"
3) 如果它符合您的标准流程

4) 在整个迭代过程中重复相同的步骤


希望这对类似问题有所帮助:@ChrisTanner请查看编辑1类似问题的可能副本:@ChrisTanner请查看编辑1非常感谢您的可能副本!但是你觉得编辑2中提出的替代数据结构怎么样?事实上,我认为我的编辑2不起作用,因为fw和其他字段一直被覆盖…没错!这就是我要说的。什么是fw?这是唯一的号码吗?这是一个号码。但并非独一无二。许多pn编号可能会引用/或指向同一fw编号谢谢!但是你觉得编辑2中提出的替代数据结构怎么样?事实上,我认为我的编辑2不起作用,因为fw和其他字段一直被覆盖…没错!这就是我要说的。什么是fw?这是唯一的号码吗?这是一个号码。但并非独一无二。许多pn编号可能引用/或指向同一fw编号