Redis хранит идентификаторы в списках / наборах - PullRequest
1 голос
/ 10 июня 2011

Используя redis, если у меня есть список продуктов, таких как top100 (где продукт является хэш-набором и может принадлежать многим спискам, таким как xmasideas, toprated и т. Д.)

например. top100: ["product: 2", "product: 234", "product: 3423", ..., "product: 7343"]

Если я хочу получить первые 10 элементов для top100 для отображения, скажем, на веб-странице, это правильный подход

1) Получить левый диапазон списка от 0 до 10, LRANGE top100 0 10 2) И затем повторяем возвращенные 10 идентификаторов и делаем GET для каждого 3) Проект и отображение

Или Redis предоставляет способ разрешения идентификаторов для других ключей на стороне сервера?

1 Ответ

0 голосов
/ 11 июня 2011

В настоящее время Redis не предоставляет способ разрешения идентификатора на стороне сервера (ветвь сценариев Lua делает - но это все еще экспериментально).

Однако вы можете делать то, что вы описываете, двумя командами (Ruby):

top_10_ids = redis.lrange('top100', 0, 10)
top_10 = redis.mget(*top_10_ids)

т.е. выполните MGET, чтобы получить все значения за один раз, но это предполагает, что значения являются скалярами.Если значения представляют собой хэши, вам придется перебирать каждый из них и делать HGETALL, но вы можете воспользоваться конвейерной обработкой (см. http://redis.io/topics/pipelining), чтобы ускорить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...