2013-09-23 3 views
0

У меня есть две таблицы в mysql, задачи и пользователи. Как это сделать в redis? какую структуру данных использовать?Как смоделировать эту структуру данных в redis?

Е.Г.,

tasks 
------------------------------------------- 
id name assigned_to cretead_at 
------------------------------------------- 
1 task1 1   2012-09-10 00:00:00 
------------------------------------------- 
2 task2 2   2013-09-11 00:00:00 
-------------------------------------------- 


users 
------------------- 
id name email 
------------------- 
1 user1 [email protected]   
-------------------- 
2 user2 [email protected]   
------------------- 

Мое требование, я идентификатор пользователя и хотите загрузить все поля, чтобы массив PHP. Я не хочу получать одно поле, как только имя пользователя. Я хочу загрузить всю информацию в php-массив для определенного идентификатора пользователя, например.

$user[1] = array("name" => "user1", "email" => "[email protected]"); 

Было бы лучше, если бы я мог категория его под разными наборами, как «пользователи» и «задача», вместо того, чтобы хранить его во многих ключах.

+0

Ну, что зависит - Структура Wnat - это данные, которые вы хотите отобразить пользователю? –

+0

@BenjaminGruenbaum, обновил мой вопрос. Вы можете помочь ? – vishal

+0

Итак, ваш единственный вариант использования - выбрать пользователя 'assign_to'? Это то, что вы делаете? –

ответ

0

Redis - это ключ: система хранения значений, поэтому вы можете хранить (и получать) значение по ключу.

Чтобы сохранить все данные в группе по категориям (пользователь, taks и т. Д.), Вы можете использовать List. Например, с phpredis:

// To store lset(key index value) 
$redis->lSet('users', $user[$id]['id'], json_encode($user[$id])); 
// To get lget(key, index) 
$redis->lGet('users', $id) 
+0

У меня есть пользователи, задачи и многие другие объекты, которые я могу захотеть кэшировать. Поэтому я ищу его категоризацию, скажем, клавишами «пользователи», «задачи» и т. Д. Я понимаю его не базу данных, я хочу кэшировать некоторые записи для разных объектов. – vishal

+0

Вы можете сериализовать все, что хотите, поэтому, если вам нужна большая запись пользователей, вы можете сделать $ redis-> set ($ id, json_encode ($ user [$ id])); для хранения одного пользователя для ключа или $ redis-> set ('users', json_encode ($ user)); Максимальный размер строки составляет 512 МБ, поэтому, если ваша пользовательская таблица настроена, я предлагаю вам использовать наборы (http://redis.io/commands#set). – skler

+0

Я не хочу использовать $ redis-> set ($ id, json_encode ($ user [$ id])); как я хочу классифицировать его для «пользователей», «задач» и т. д. Я хочу использовать $ redis-> set ('users', json_encode ($ user)); но я могу получить доступ к пользователю по идентификатору пользователя? Структура, которую я хочу, это «пользователи» -> user_id -> json_encode ($ user); Как я могу это достичь? – vishal

Смежные вопросы