Якщо ви не знаєте точно, як організувати дані в 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)
Як бачите, у другому тесті потрібно проаналізувати лише значення "інформація", оскільки hgetall (ключ) вже повертає dict, але не вкладений.
І звичайно, найкращим прикладом використання Redis як диктовки python є Перший тест
json.dumps()
як рядок, і після отримання від користувачаjson.loads()
redis для десеріалізації їх назад до структури даних python