- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我知道 Redis 有 MATCH
作为 SCAN
的一部分(详见 here )以查找与 glob 样式模式匹配的键(即 sub .domain.com 可以从 scan 0 MATCH *.domain.com
)
我的问题是是否有办法执行反向操作。如果我的键 是 glob 样式模式(即 *.domain.com 是键之一)我如何搜索以查看哪些键具有匹配 sub 的模式.domain.com?
一个想法是使用 EVAL
编写一个 Lua 脚本来执行此操作,但我认为这会占用大量资源吗?还有其他方法可以解决这个问题吗?
为了让事情更清楚一些,这里有一些示例键(用逗号分隔)(我现在不打算担心这些值,因为它们并不真正适用于这个问题)、查询和响应我希望查询生成:
键:*img.myserver.com*
、*.mywebsite.com*
、*www.example.com/images*
查询 -> 预期响应(匹配键)
扫描 0 REV-MATCH https://img.myserver.com/myimg.jpg
-> *img.myserver.com*
扫描 0 REV-MATCH http://www.myserver.com/otherimg.jpg
-> 没有匹配
扫描 0 REV-MATCH http://www.mywebsite.com/blah/blah.jpg
-> *.mywebsite.com*
扫描 0 REV-MATCH https://www.example.com/images/old/a.jpg
-> *www.example.com/images*
REV-MATCH
(反向匹配)是一个不存在的函数 - 但我希望可以通过其他方式找到类似的功能。如果两个键具有在某些情况下可以匹配相同字符串的 glob 模式,则可能存在多个匹配项(但是,在我的用例中,这不会发生,因为我始终确保 glob 模式永远不会重叠)
最佳答案
除非我错了,否则我认为您想多了。 GET *.domain.com
(即将“sub”替换为“*”)应该可以做到。如果未找到,则继续 GET *.com
,依此类推,直到以 GET *
结束,这应该是所有事物的“根”。
好的,我明白了。所以,不,SCAN
不是正确的方法,但我知道您至少可以尝试另外两条路径。如果您遇到任何死胡同,请大声喊叫或提出一个新问题;)
转到 https://redis.io/topics/indexes#lexicographical-indexes并阅读(可能需要多次迭代,我建议实际阅读整篇文章)。然后,根据您的要求,请记住您可以通过在另一个 Sorted Set 中存储(和搜索)反向来进行后缀匹配。
看看http://redisearch.io ,一个实现完整搜索引擎的 Redis 模块(包括自动完成功能(tm))。
免责声明:我在 Redis Labs 工作,这里是开源 Redis 的发源地,也是利用它的商业解决方案提供商,包括上述模块(开源,AGPL 许可)。
关于Redis 查找匹配字符串的模式键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45382582/
使用sed和/或awk,仅在行包含字符串“ foo”并且行之前和之后的行分别包含字符串“ bar”和“ baz”时,我才希望删除行。 因此,对于此输入: blah blah foo blah bar
例如: S1: "some filename contains few words.txt" S2:“一些文件名包含几个单词 - draft.txt” S3:“一些文件名包含几个单词 - 另一个 dr
我正在尝试处理一些非常困惑的数据。我需要通过样本 ID 合并两个包含不同类型数据的大数据框。问题是一张表的样本 ID 有许多不同的格式,但大多数都包含用于匹配其 ID 中某处所需的 ID 字符串,例如
我想在匹配特定屏幕尺寸时显示特定图像。在这种情况下,对于 Bootstrap ,我使用 col-xx-## 作为我的选择。但似乎它并没有真正按照我认为应该的方式工作。 基本思路,我想显示一种全屏图像,
出于某种原因,这条规则 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*
我想做类似的东西(Nemerle 语法) def something = match(STT) | 1 with st= "Summ" | 2 with st= "AVG" =>
假设这是我的代码 var str="abc=1234587;abc=19855284;abc=1234587;abc=19855284;abc=1234587;abc=19855284;abc=123
我怎样才能得到这个字符串的数字:'(31.5393701, -82.46235569999999)' 我已经在尝试了,但这离解决方案还很远:) text.match(/\((\d+),(\d+)\)/
如何去除输出中的逗号 (,)?有没有更好的方法从字符串或句子中搜索 url。 alert(" http://www.cnn.com df".match(/https?:\/\/([-\w\.]+
a = ('one', 'two') b = ('ten', 'ten') z = [('four', 'five', 'six'), ('one', 'two', 'twenty')] 我正在尝试
我已经编写了以下代码,我希望用它来查找从第 21 列到另一张表中最后一行的值,并根据这张表中 A 列和另一张表中 B 列中的值将它们返回到这张表床单。 当我使用下面的代码时,我得到一个工作表错误。你能
我在以下结构中有两列 A B 1 49 4922039670 我已经能够评估 =LEN(A1)如2 , =LEFT(B1,2)如49 , 和 =LEFT(B1,LEN(A1)
我有一个文件,其中一行可以以 + 开头, -或 * .在其中一些行之间可以有以字母或数字(一般文本)开头的行(也包含这些字符,但不在第 1 列中!)。 知道这一点,设置匹配和突出显示机制的最简单方法是
我有一个数据字段文件,其中可能包含注释,如下所示: id, data, data, data 101 a, b, c 102 d, e, f 103 g, h, i // has to do with
我有以下模式:/^\/(?P.+)$/匹配:/url . 我的问题是它也匹配 /url/page ,如何忽略/在这个正则表达式中? 该模式应该: 模式匹配:/url 模式不匹配:/url/page 提
我有一个非常庞大且复杂的数据集,其中包含许多对公司的观察。公司的一些观察是多余的,我需要制作一个键来将多余的观察映射到一个单独的观察。然而,判断他们是否真的代表同一家公司的唯一方法是通过各种变量的相似
我有以下 XML A B C 我想查找 if not(exists(//Record/subRecord
我制作了一个正则表达式来验证潜在的比特币地址,现在当我单击报价按钮时,我希望根据正则表达式检查表单中输入的值,但它不起作用。 https://jsfiddle.net/arkqdc8a/5/ var
我有一些 MS Word 文档,我已将其全部内容转移到 SQL 表中。 内容包含多个方括号和大括号,例如 [{a} as at [b],] {c,} {d,} etc 我需要进行检查以确保括号平衡/匹
我正在使用 Node.js 从 XML 文件读取数据。但是当我尝试将文件中的数据与文字进行比较时,它不匹配,即使它看起来相同: const parser: xml2js.Parser = new
我是一名优秀的程序员,十分优秀!