Search REDIS哈希HMSET中的计数和搜索

Search REDIS哈希HMSET中的计数和搜索,search,count,redis,hash,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专家请帮忙。我想在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"
现在我想要以下内容:

  • 哈希用户中记录的计数
  • 仅获取国家=美国且年龄在31到40岁之间的记录

  • 你不能只使用散列。Redis不支持按值搜索;在您的情况下,您需要使用来存储分数中的年龄和国家,以及值中的用户id。例如:

    zadd user:ages 30 1 34 2 45 3 and so on...
    
    然后,您可以选择指定年龄范围内的所有用户:

    zrangebyscore user:ages 30 40
    
    国家/地区也是如此(您需要使用数字国家/地区表示)


    您可以使用lua脚本在redis端对select结果进行交叉或联合

    以计算用户使用的散列中的记录数。它返回存储在密钥处的哈希中包含的字段数

    HLEN用户:1


    它将返回“3”。

    一个想法:为每个国家创建一个单独的有序集(zset)。在集合中,姓名是成员,年龄是分数。通过这种方式,您将能够按年龄进行查询,并找到特定的国家。