我对 Redis 还很陌生。开始使用带有 ':' 分隔命名空间的 redis 来存储 pickle 数据。 在 Redis 客户端(例如 redisinsights)上使用通配符搜索来搜索存储的数据更容易。
例如如果数据以分层结构存储
键=源1:20240506:部分1:子类型1:1值=pickle(数据集1) 键=源1:20240506:部分2:子类型2:2值=pickle(数据集2)
客户端上的扫描(例如 source1:202405*)会显示一个密钥列表,然后可以单独探索这些密钥。
现在的问题是,如果我使用 json.set 代替,为什么不支持在键/命名空间上进行通配符搜索?
每当我尝试通配符扫描时,都不会显示任何数据。但是,如果我使用精确的密钥,则会显示数据。
在我的机器上运行:
127.0.0.1:6379> json.set source1:20240506:part1:subtype1:1 $ '{ "foo": "bar" }'
OK
127.0.0.1:6379> json.set source1:20240506:part1:subtype1:2 $ '{ "baz": "qux" }'
OK
127.0.0.1:6379> scan 0 MATCH source1:202405* COUNT 100
1) "0"
2) 1) "source1:20240506:part1:subtype1:2"
2) "source1:20240506:part1:subtype1:1"
这是您遇到的情况的准确示例吗?您使用什么版本的 Redis?