2012-01-24 1 views
1

Я храню пары ключ-значение в базе данных Redis через клиента Redis-py. Все ключи уникальны, дубликатов нет. Вот пример:Хранение пар ключ-значение с хешем или без него в redis

key = 133735570 
value = {"key":133735570,"value":[[141565041,1.2],[22592300,1.0],[162439394,1.0],[19397942,1.0],[79996146,1.0],[84352985,1.0],[123276403,1.0],[18356816,1.0],[113839687,1.0],[16235789,1.0],[144779115,1.0],[94628304,1.0],[134973120,1.0],[138501363,1.0],[34351681,1.0],[80202522,1.0],[81561595,1.0],[18913677,1.0],[130488590,1.0],[128208311,1.0],[93912155,0.5]]} 

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

key = 133735570 
hash = 133735570 
value = {"key":133735570,"value":[[141565041,1.2],[22592300,1.0],[162439394,1.0],[19397942,1.0],[79996146,1.0],[84352985,1.0],[123276403,1.0],[18356816,1.0],[113839687,1.0],[16235789,1.0],[144779115,1.0],[94628304,1.0],[134973120,1.0],[138501363,1.0],[34351681,1.0],[80202522,1.0],[81561595,1.0],[18913677,1.0],[130488590,1.0],[128208311,1.0],[93912155,0.5]]} 

Мое требование - искать ключи, чтобы извлекать из него соответствующие значения.

ответ

0

Вы можете попытаться сохранить ваши пары ключ-значение (значение в вашем примере) в пределах структуры данных hash (где ключевая часть вашей пары будет храниться как поле хэша и значение как хеш-значение, проверьте HMSET), который более гибкая для обработки данных и может consume less memory, чем строки с обычным значением.

+0

Итак, я должен сделать redisObject.hmset (ключ, значение) вместо текущего redisObject.hset (ключ, ключ, значение)? Примечание: есть * NO * дубликаты ключей. Будет ли он по-прежнему помогать эффективной памяти? – Dexter

+0

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