我在 redis 中有一个哈希集,如下所示。
"abcd" : {
"rec.number.984567": "value1",
"rec.number.973956": "value2",
"rec.number.990024": "value3",
"rec.number.910842": "value4",
"rec.number.910856": "...",
"other.abcd.efgh": "some value",
"other.xyza.blah": "some other value"
"..." : "...",
"..." : "...",
"..." : "...",
"..." : "..."
}
Run Code Online (Sandbox Code Playgroud)
如果我调用 hgetall abcd,它会给我哈希中的所有字段。我的目标是仅获取哈希集中以“rec.number”开头的字段。当我打电话时
redis-cli hmget "abcd" "rec.number*",
Run Code Online (Sandbox Code Playgroud)
它给了我这样的结果
1)
Run Code Online (Sandbox Code Playgroud)
有没有办法只检索那些以我的预期模式开头的键的数据?我只想检索这些键,因为我的数据集包含许多其他不相关的字段。
HMGET不支持字段名称中的通配符。您可以使用HSCAN来实现:
HSCAN abcd 0 MATCH rec.number*
Run Code Online (Sandbox Code Playgroud)
该脚本在 LUA 脚本中执行此操作:
local rawData = redis.call('HGETALL', KEYS[1]);
local ret = {};
for idx = 1, #rawData, 2 do
if string.match(rawData[idx], ARGV[1]) then
hashData[rawData[idx]] = rawData[idx + 1];
end
end
Run Code Online (Sandbox Code Playgroud)
关于在 Redis 中使用和 LUA 的详细介绍可以在Redis 用户指南redis-cli中找到。
| 归档时间: |
|
| 查看次数: |
10340 次 |
| 最近记录: |