query - 怎样基于Redis实现模糊查询
某草草
某草草 2017-04-24 16:00:35
0
3
1274

问题如题,注意不是指模糊查询Key,是指对值的模糊(关键字)查询。
举个栗子:

$ HMSET user:1 name jack age 18
$ HMSET user:2 name jackson age 21
$ HMSET user:3 name suse age 16

假如有上述用户数据,以哈希形式存储,如果要做排序,可以

# score为#age,value为#userId,以ZSET结构存储
$ ZADD user:rank:age 18 1 21 2 16 3
# 查询有序列表
$ ZRANGE user:rank:age 0 -1

但如果需要既实现根据年龄排序,还要能够实现关键字查询(模糊匹配用户名),应该怎样实现?

某草草
某草草

répondre à tous(3)
淡淡烟草味

Il existe une méthode alternative, qui peut réaliser dans une certaine mesure une quantité simple et réduite de requêtes floues :
Lors de l'écriture des informations utilisateur, divisez le nom d'utilisateur en tant que clé pour enregistrer l'ID utilisateur

SADD user:like:j jack jackson
SADD user:like:ja jack jackson
SADD user:like:jac jack jackson
SADD user:like:jack jack jackson
SADD user:like:jacks jackson
SADD user:like:jackso jackson
SADD user:like:jackson jackson
Lors de l'exécution d'une requête floue après

, saisissez : j, vous pourrez alors trouver deux éléments SET et jack de la collection jackson. Bien entendu, ces deux valeurs peuvent être remplacées par l'ID utilisateur, puis, en fonction de l'ID utilisateur, pour interroger les informations de hachage de l'utilisateur.
Cette méthode ne convient qu'aux scénarios dans lesquels la condition de requête est unique et la longueur du champ est courte. Si : La correspondance floue du titre de la publication et de l'article ne fonctionnera pas en même temps. Vous pouvez toujours essayer le titre, mais le. le contenu ne sera certainement pas atteint.

Bien sûr, Redis n'est pas intrinsèquement adapté à cela, donc s'il existe d'autres solutions, il est recommandé d'utiliser d'autres solutions pour y parvenir.

巴扎黑

La méthode euphémique est d'écrire vous-même le script Lua.
Ou si l'ensemble de données n'est pas volumineux, filtrez-le vous-même côté client.
Si une requête floue est une exigence stricte, il est recommandé de passer à Solr ou Elasticsearch.

黄舟

Redis ne dispose pas de méthodes de requête aussi riches, et les requêtes floues ne peuvent être effectuées qu'en clé, ce qui ne peut pas répondre à vos besoins riches. Si vous souhaitez un stockage à haut débit, il est recommandé d'utiliser Redis. Si vous souhaitez exécuter une logique métier et disposer de méthodes de requête riches, il est recommandé d'utiliser MongoDb

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal