gpt4 book ai didi

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

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

我有以下哈希:

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'

我是否可以搜索规则哈希并找到所有前缀为 1231231234 的记录?有点像

HGET rules:1231231234*

或者...也许我创建数据的方式有误。创建这样的数据集的最佳方法是什么:(json 符号)

{
pn: 1231231234,
rules: [{
"expiration_date" : "",
"days_of_week" : "Thu, Tue, Wed",
"start_time" : "11:00",
"end_time" : "17:00",
"fw" : "9999"
},
{
"rule_expiration_date" : "",
"days_of_week" : "Thu",
"start_time" : "9:00",
"end_time" : "10:59",
"fw" : "2222"

}]
}

这些数据将如何使用:

我需要根据当前时间找到适用于我的规则。因此,例如,当我的应用程序收到“处理”pn 1231231234 的请求时,我需要查找该 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。

结合 SCANHGETALL 你可以实现这一点。

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) 在整个迭代过程中重复相同的操作。

希望对你有帮助

关于redis - 如何在redis搜索中使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39413858/

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