首页 > 解决方案 > 在 Redis 缓存中按值搜索 - 二级索引

问题描述

我是 Redis 的新手。我想通过来自 API 的一个或多个值进行搜索。例如 - 假设我想存储一些 sec 数据,如下所示:

    Value1
        {

        "isin":"isin123",
        "id_bb_global":"BBg12345676",
        "cusip":"cusip123",
        "sedol":"sedol123",
        "cpn":"0.09",
        "cntry":"US",
        "144A":"xyz",
        "issue_cntry":"UK"
        }

        Value2
        {

        "isin":"isin222",
        "id_bb_global":"BBG222",
        "cusip":"cusip222",
        "sedol":"sedol222",
        "cpn":"1.0",
        "cntry":"IN",
        "144A":"Y",
        "issue_cntry":"DE"
        }
...
...

我想按 cusip 或 cusip 和 id_bb_global、ISIN plus Exchange 或 sedol 进行搜索。

例如 - 搜索查询数据 -> {"isin":"isin222", "cusip":"cusip222"} ,应该从值返回所有数据集。

将这种数据结构存储在 Redis 和 API 中以更快地检索相同数据的最佳方法是什么。

标签: cachingredisfull-text-searchkey-value-store

解决方案


插入数据时,可以创建集合来维护索引。

{

        "isin":"isin123",
        "id_bb_global":"BBg12345676",
        "cusip":"cusip123",
        "sedol":"sedol123",
        "cpn":"0.09",
        "cntry":"US",
        "144A":"xyz",
        "issue_cntry":"UK"
        }

对于上述数据的示例,如果您想通过isinand进行过滤,您可以为andcusip创建相应的集合,并将该项目 id 添加到这两个集合中。isin:123cusip:123

稍后,如果您想找到两者中的项目isin:123cusip:123,您只需要SINTER在这 2 个集合上运行。

或者,如果您想查找isin:123OR中的项目cusip:123,您可以合并它们。


推荐阅读