Если вы точно не знаете, как организовать данные в Redis, я провел несколько тестов производительности, включая анализ результатов. Словарь, который я использовал ( d ), имел 437,084 ключа (формат md5) и значения этой формы:
{"path": "G:\tests\2687.3575.json",
"info": {"f": "foo", "b": "bar"},
"score": 2.5}
Первый тест (вставка данных в сопоставление "ключ-значение" redis):
conn.hmset('my_dict', d)
conn.info()['used_memory_human']
for key in d:
json.loads(conn.hget('my_dict', key).decode('utf-8').replace("'", '"'))
import ast
for key in d:
ast.literal_eval(conn.hget('my_dict', key).decode('utf-8'))
conn.delete('my_dict')
Второй тест (вставка данных непосредственно в ключи Redis):
for key in d:
conn.hmset(key, d[key])
conn.info()['used_memory_human']
for key in d:
json.loads(conn.hgetall(key)[b'info'].decode('utf-8').replace("'", '"'))
for key in d:
conn.delete(key)
Как видите, во втором тесте нужно анализировать только значения info, потому что hgetall (key) уже возвращает dict, но не вложенный.
И, конечно же, лучший пример использования Redis в качестве dicts Python - это First Test.
json.dumps()
записи в виде строки и после получения от пользователя redisjson.loads()
для десериализации обратно в структуру данных python