web-dev-qa-db-fra.com

Comment rechercher des chaînes dans redis?

Je veux une fonctionnalité de saisie semi-automatique. J'ai de courtes chaînes descriptives sur une propriété d'un type de données. J'ai une liste d'ID dans redis pour le type de données ordonné par date de création et j'utilise les id pour définir et obtenir des propriétés pour le type de données comme expliqué dans la documentation de type redis. Je n'utilise pas de tables de hachage. Quelle est la meilleure façon d'obtenir un ensemble de chaînes correspondant à ce qui a été tapé dans une zone de saisie semi-automatique compte tenu de cette configuration? Passer en revue tous les identifiants et vérifier la propriété que je veux rechercher - pour chaque frappe semble être la mauvaise façon de le faire.

EDIT: En plus des réponses ci-dessous, on m'a montré ceci:

http://antirez.com/post/autocomplete-with-redis.html

31
Bjorn Tipling

Vous devez configurer un index à l'aide d'ensembles ou d'ensembles triés dans lesquels vous écrivez lorsque vous enregistrez quelque chose.

Il y a un bon article sur http://web.archive.org/web/20121013063245/http://playnice.ly/blog/2010/05/05/a-fast-fuzzy-full-text-index -using-redis c'est assez proche de ce que j'utilise moi-même.

10
Tom Clarkson

Dans Redis, il n'y a aucun moyen de rechercher la valeur d'une clé. La seule façon de "trouver" une chaîne est via la commande keys. Le seul inconvénient est qu'il recherche les noms de clés, pas la valeur. La façon dont vous pouvez contourner cela est d'avoir votre chaîne de recherche comme clé, puis d'avoir la valeur de cette clé votre ID. J'utilise une fonction de saisie semi-automatique de mon côté, et j'utilise une autre base de données qui contient juste des chaînes de recherche avec un ID comme valeur.

4
Colum