Как искать внутри 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.