Получение последнего набора / хэша от Redis - PullRequest
5 голосов
/ 27 октября 2011

Я только начинаю работать с Redis, и я наткнулся на свой первый камень преткновения с ходом noSql;ранее все, что я знал, это SQL-сервер.

Я понимаю принцип, что все основано на значении ключа.Но как это работает с упорядочением, например:

Использование хеш-набора:

HMSET users:1 firstname 'james' lastname 'smith' created 'datetime.datatime.now'

Теперь я предполагаю, что вы добавите вторую запись, чтобы получить длину хеш-набора (в этом случае мы скажем, что его 1 вернулся к значению x), затем добавим еще одну строку:

HMSET users:x firstname 'john' lastname 'smith' created 'datetime.datatime.now'

Как бы вы получили последнюю запись?По дате?Или вы можете просто сказать «получить запись в -1 из хэш-набора»?

Возможно, я предлагаю использовать хэш-набор, когда отсортированные наборы более уместны?

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Вы захотите проверить команду SORT .

Вы можете выполнить сортировку путем создания метки времени, если она хранится в эпоху времени.

> HMSET users:1 firstname 'john' lastname 'smith' created 1319729878
"OK"
> HMSET users:2 firstname 'Jane' lastname 'Forbes' created 1319729910
"OK"
> sadd users 1
true
> sadd users 2
true
> sort users get users:*->firstname by users:*->created
["john","Jane"]
> sort users get users:*->firstname by users:*->created desc
["Jane","john"]

Вы можете получитьнесколько ключей, если вы хотите, SORT, вероятно, команда с большинством параметров, изучите документ.

О ключах, вы должны тщательно подумать о возможном повторном использовании ключа (delete, count + 1, insert будет повторно использовать ключ?), поэтому я просто получаю ключи из реляционной базы данных в моем проекте.

0 голосов
/ 01 ноября 2012

Вам следует использовать отсортированный набор идентификаторов пользователей, при добавлении в набор добавьте идентификатор пользователя и метку времени в качестве оценки.

Затем вы можете вытащить их в порядке asc или desc, используя что-то вроде zrevrange, ограничьте это 1 записью, чтобы получить вашу последнюю версию.

Тогда вы можете получить все значения из вашего хэша.

...