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。它返回存储在 key 的哈希中包含的字段数。

HLEN user:1

它将返回“3”。

于 2015-08-02T09:12:43.070 回答