2017-02-09 13 views
1

Я имею в виду у меня есть строки, как говорятRedis: Возможно ли получить отфильтрованные данные в любом поле, хранящемся в Redis?

id name email  emp_id 
1 abc [email protected] e1e2 
2 lmn [email protected] e1e3 

И после загрузки MySQL, я сохранил эти данные в Redis.

Теперь скажите, что я хочу получить данные через чей-то адрес электронной почты id [email protected] от redis. Как мне это сделать и какой тип данных я должен использовать в redis?

ответ

1

Это зависит от того, как вы храните данные в redis. Если вы часто обращаетесь по электронной почте, вы можете использовать электронную почту в качестве ключа хэша и напрямую обращаться к значению с помощью «HGETALL email: [email protected]».

+0

Что делать, если я хочу искать по имени и имени тоже? В таблице говорят 50 столбцов, мы не можем сделать 50 разных ключей на одном столе! И в любом приложении более 100 таблиц. –

2

Что вам нужно, это вторичный индекс. Вы можете реализовать его самостоятельно, используя структуры данных redis. Или, если вы хорошо с Redis 4.0 (в RC стадии прямо сейчас), вы можете попробовать этот модуль, который позволяет автоматизировать, что:

https://github.com/RedisLabsModules/secondary

С его помощью вы можете сделать что-то вроде:

IDX.FROM users_email WHERE "email ='[email protected]'" HGETALL $ 

И выполнять операции redis на клавишах, соответствующих условию WHERE ($ заменяет фактический идентификатор для каждого идентификатора, соответствующего запросу).