Как искать внутри json-файла с помощью redis?

Здесь я устанавливаю объект json внутри ключа в redis. Позже я хочу выполнить поиск по json-файлу, хранящемуся в redis. Мой ключ поиска всегда будет строкой json, как в примере ниже, и я хочу найти соответствие этому ключу в сохраненном json-файле.

В настоящее время я делаю это с помощью итерации и сравнения, но вместо этого я хочу сделать это с помощью redis. Как я могу это сделать?

rd = redis.StrictRedis(host="localhost",port=6379, db=0)
if not rd.get("mykey"):
   with open(os.path.join(BASE_DIR, "my_file.josn")) as fl:
      data = json.load(fl)
      rd.set("mykey", json.dumps(data))
else:
  key_values = json.loads(rd.get("mykey"))
  search_json_key =  {
          "key":"value",
          "key2": {
            "key": "val"
           }
        }
  # here i am searching by iterating and comparing instead i want to do it with redis
  for i in key_values['all_data']:
     if json.dumps(i) == json.dumps(search_json_key):
        # return 

# mykey format looks like this:
{
    "all_data": [
        {
          "key":"value",
          "key2": {
            "key": "val"
           }
        },
        {
          "key":"value",
          "key2": {
            "key": "val"
           }
        },
        {
          "key":"value",
          "key2": {
            "key": "val"
           }
        },
    ]
}
  

Для выполнения поиска с Redis и JSON у вас есть два варианта - вы можете использовать команду FT CREATE для создания индекса, над которым затем можно использовать FT SEARCH, (хотя обе эти веб-страницы показывают синтаксис CLI, вы можете выполнить rd.ft().create() / search() в вашем сценарии на python)

ИЛИ вы можете проверить python OM клиент, который позаботится об этом в некоторой степени для вас.

В любом случае вам придется немного переделать систему, чтобы полностью использовать возможности поиска Redis.

Вернуться на верх