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

问题如题,注意不是指模糊查询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

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

某草草
某草草

全員に返信(3)
淡淡烟草味

シンプルでデータ量の少ないファジークエリをある程度実現できる代替方法があります:
ユーザー情報を書き込む際に、ユーザー名をKeyに分割してユーザーIDを記録します

リーリー

後であいまいクエリを実行する場合は、次の 2 つの項目を入力します。 もちろん、これら 2 つの値はユーザー ID に置き換えることができ、ユーザー ID に基づいてユーザーのハッシュ情報がクエリされます。 j,则可以从SET集合中查出jackjacksonこの方法は、クエリ条件が 1 つで、フィールドの長さが短い場合にのみ適しています。投稿タイトルと投稿記事を同時にファジー一致させる場合は、タイトルを試すことはできますが、内容は確実に達成できません。

もちろん、Redis は本質的にこれに適しているわけではないため、他のソリューションがある場合は、他のソリューションを使用してそれを実現することをお勧めします。

いいねを押す +0
巴扎黑

婉曲的な方法は、Lua スクリプトを自分で書くことです。
または、データセットが大きくない場合は、クライアント側で自分でフィルタリングします。
ファジークエリが難しい要件である場合は、Solr または Elasticsearch に移行して実行することをお勧めします。

いいねを押す +0
黄舟

Redis にはそのような豊富なクエリ メソッドがなく、ファジー クエリはキーでのみ実行できるため、リッチなニーズを満たすことができません。高速なストレージが必要な場合は、Redis を使用することをお勧めします。ビジネスロジックを実行し、豊富なクエリメソッドを使用したい場合は、MongoDb を使用することをお勧めします。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート