3

REDIS の専門家が助けてください。redis ハッシュをカウントして検索したい。

私のユーザーデータ:

| id | name    | age | country |
| 1  | jaspal  | 32  | US
| 2  | singh   | 45  | UK
| 4  | manjot  | 24  | US
| 5  | tarleen | 20  | UK
| 7  | daljeet | 30  | US
| 8  | sutdhar | 40  | US

... 等々

次のように HMSET を使用して、このユーザー データを redis に保存しました。

HMSET user:1 name "jaspal"  age "32" country "US"
HMSET user:2 name "singh"   age "45" country "UK"
HMSET user:4 name "manjot"  age "24" country "US"
HMSET user:5 name "tarleen" age "20" country "UK"
HMSET user:7 name "daljeet" age "30" country "US"
HMSET user:8 name "sutdhar" age "40" country "US"

今、私は次のものが欲しいです:

  1. ハッシュ ユーザーのレコード数をカウントします。
  2. レコードのみを取得しますWHERE country=US AND age BETWEEN 31 AND 40
4

2 に答える 2

3

ハッシュだけでそれを行うことはできません。Redis は値による検索をサポートしていません。あなたの場合、ソートされたセットを使用して、年齢と国をスコアに、ユーザー ID を値に保存する必要があります。例えば:

zadd user:ages 30 1 34 2 45 3 and so on...

指定された年齢範囲内のすべてのユーザーを選択できます。

zrangebyscore user:ages 30 40

国についても同じです(数値の国表現を使用する必要があります)

lua スクリプトを使用して、redis 側で選択結果を交差または結合できます

于 2012-12-31T13:35:30.667 に答える
0

ハッシュ ユーザーのレコード数をカウントするには、HLENを使用します。キーに格納されているハッシュに含まれるフィールドの数を返します。

HLEN user:1

「3」を返します。

于 2015-08-02T09:12:43.070 に答える