Как искать значения в Redis с помощью redis для python - PullRequest
0 голосов
/ 05 ноября 2018

В настоящее время я пытаюсь искать записи в моем Redis, которые соответствуют определенному значению через HTTP API, так же, как вы делаете это с обычной БД (например: http://localhost:8000/api?name=John&age=20) с библиотекой Redis Python ( https://pypi.org/project/redis/).

Код, который у меня есть, возвращает весь хэш, преобразует каждую запись в JSON и добавляет ее в список

import json
import redis
import os

r = redis.StrictRedis(host=os.environ['redis_url'], port=os.environ['redis_port'], password=os.environ['redis_pass'], ssl=True)
result = r.hgetall('Directory')
dic_list = []
for key in result.keys():
    dic_list.append(json.loads(result[key].decode('utf-8')))

return dic_list

Я знаю, что могу получить значение определенного ключа с помощью

r.hget('Directory', 'key_I_want')

Однако внутри каждого ключа есть целый JSON, заполненный информацией, поэтому, например, это будет ключ, пример значения внутри хеша Справочника

"1": {
     "name": "James", 
      "age": "22", 
      "favorite_color":"Green"
 }, 
"2":{
      "name":"John",
      "age": "20",
      "favorite_color": "red"
  }, 
"3":{
      "name":"Jim",
      "age": "30",
      "favorite_color": "yellow"
  }

Итак, я знаю

r.hget('Directory', '1')

вернется

{
     "name": "James", 
      "age": "22", 
      "favorite_color":"Green"
 }

Но что я действительно хочу, так это искать каждый JSON с определенными значениями, а не просто получать значения каждого ключа внутри хеша, есть ли способ сделать это на самом деле?

1 Ответ

0 голосов
/ 05 ноября 2018

Исходя из вашего вопроса, вы, возможно, ищете значение в результатах [ключ]. Предположим, что значение равно val, попробуйте:

for key in result.keys():
    if val in result[key].values():
        dic_list.append(json.loads(result[key].decode('utf-8')))

например, если

val = "James"

Йой получит все результаты с Джеймсом в значении.

Вы можете немного перемешать, изменить так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...