【发布时间】:2026-02-04 14:15:01
【问题描述】:
我以这种方式创建了 Redis 键/值索引:
set 7:12:321 '{"some:"JSON"}'
key由冒号分隔,key的每一部分代表一个层次索引。
get 7:12:321 表示我知道确切的层次结构并且只想要一个项目
scan 7:12:* 表示我想要第一层层次结构中 id 7 和第二层层次结构中 id 12 下的每个项目。
问题是:如果我想要 JSON 值,我必须首先 scan(在几毫秒内约 50000 个条目)然后 get 逐个扫描返回的每个键(800 毫秒)。
这不是很有效。这是我在 * 搜索“扫描 Redis 值”时找到的唯一答案。
1/ 是否有另一种扫描 Redis 以获取值或键/值对而不仅仅是键的方法?我尝试了hscan,如下:
hset myindex 7:12:321 '{"some:"JSON"}'
hscan myindex MATCH 7:12:*
但它破坏了性能(50000 个条目几乎是 4s)
2/ Redis 中是否有另一种数据结构我可以以相同的方式使用,但可以“扫描值”(hset?)
3/ 我是否应该使用另一种数据存储解决方案(例如 PostgreSQL ltree?)以适应我的用例并具有巨大的性能?
我一定遗漏了一些非常明显的东西,因为这听起来像是一个常见的用例。
感谢您的回答。
【问题讨论】:
标签: postgresql redis key-value-store