2012-01-16 20 views
8

Algo que aparece todo el tiempo con nuestro conjunto de datos en el trabajo necesita consultar un conjunto de valores dado un rango de claves. Los intervalos de fechas son un ejemplo obvio.Obtenga una gama de teclas con redis?

Sé que usted puede utilizar las marcas de tiempo UNIX y un conjunto ordenado de forma que consultar por rangos de fechas, pero parece molesto, ya que tendría que sea

  1. poner todo el documento como el valor en el conjunto ordenado o
  2. simplemente coloque los identificadores, luego pregunte redis por cada clave.

¿Quizás la opción 2 es estándar? ¿Hay alguna manera de pedir redis por varias claves a la vez? ¿Como $ de mongodb en consulta? ¿O quizás pedir un montón de llaves en una tubería es igual de rápido?

+0

opción 2 es estándar. hay un MGET para llaves múltiples. http://redis.io/topics/twitter-clone –

Respuesta

6

Opciones 2, coloque Ids en el conjunto ordenado y luego use mget para obtener los valores; si sus claves son hashes, debe emitir múltiples hget, pero la ventaja es que puede extraer partes específicas del objeto que realmente tiene. Necesito en lugar de todo. Es muy rápido en la práctica.

+0

Interesante. ¿Me imagino que también querrías usar el gasoducto? Es posible que quiera extraer regularmente 100 valores de esta manera. Parece que esto también es posible con SORT, ¿verdad? ¿Es más lento? –

+1

Dependiendo del idioma/biblioteca que utilice pipelining generalmente está integrado, por ejemplo para node.js node_redis lo hará por usted sin ningún esfuerzo adicional. También puede usar el truco de ordenación, pero no estoy seguro de si realmente es más rápido de cualquier forma mensurable. Me encantaría ver algunos puntos de referencia para ello. –

+0

Debe utilizar pipelining, medí el rendimiento de la misma y es aproximadamente 5 veces más rápido trabajando con 10k claves, resultados en mi blog http://blog.jmoz.co.uk/python-redis-py-pipeline – jmoz

1

Quizás algo de magia bash ayuda?

echo 'keys YOURKEY*' | redis-cli | sed 's/^/get /' | redis-cli 

Esta es la salida de los datos de todas las claves que comienzan con yourkey

+4

** Importante nota: ** El comando 'KEYS' está bloqueando y puede llevar mucho tiempo si tienes muchos datos. Puede eliminar servidores/aplicaciones de esta manera. – ceejayoz