REDIS中的COUNT和SEARCH哈希HMSET

时间:2012-12-28 15:07:27

标签: search count redis hash

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

2 个答案:

答案 0 :(得分:3)

你只能用哈希来做到这一点。 Redis不支持按值搜索;在您的情况下,您需要使用sorted sets来存储分数和用户ID的年龄和国家/地区。例如:

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

您可以选择所有处于指定年龄范围内的用户:

zrangebyscore user:ages 30 40

和国家相同(您需要使用数字国家/地区代表)

您可以使用lua脚本在redis端交叉或联合选择结果

答案 1 :(得分:0)

计算哈希用户使用HLEN中的记录数。它返回key中存储的哈希中包含的字段数。

HLEN user:1

它将返回'3'。