如何在Redis的哈希键搜索?(How to search in redis for hash ke

2019-07-30 09:54发布

我使用哈希键来存储用户的细节,如:

 hmset user:1 user_name lee  age 21
 hmset user:2 user_name david  age 25
 hmset user:3 user_name chris  age 25

我需要寻找有用户的age = 25name = lee 。 如何做在特定领域的特定值的搜索?

Answer 1:

你不能。 Redis是一个key-value存储,而不是关系数据库。

为了搜索特定的数据,你需要建立对这些数据的访问路径。 例如,为了获得具有年龄= 25的用户,则需要建立索引的年龄值映射到用户。 它可以用一组来完成。 这是名称相同。

一旦你有套年龄和名字,你可以通过相交的集合进行搜索的用户。 例如:

# Add 3 users
hmset user:1 user_name lee age 21
hmset user:2 user_name david age 25
hmset user:3 user_name chris age 25

# Maintain age index
sadd age:21 1
sadd age:25 2 3

# Maintain name index
sadd name:lee 1
sadd name:david 2
sadd name:chris 3

# Get the ID of users having age = 25 and name = lee
sinter age:25 name:lee
  -> will return an empty set


Answer 2:

Acually您可以在钥匙放值做

HMSET lee:25 user_name lee age 25
HMSET massi:43 user_name massi age 43
HMSET lee:24 user_name lee age 24
HMSET lee:28 user_name lee age 28 city Berlin

现在你可以用“钥匙”命令,找到他们

127.0.0.1:6379> keys *:25
1) "lee:25"
127.0.0.1:6379> keys lee*
1) "lee:25"
2) "lee:24"
3) "lee:28"
127.0.0.1:6379> keys massi:43
1) "massi:43"

最后找到具体的哈希

127.0.0.1:6379> HGETALL lee:24
1) "user_name"
2) "lee"
3) "age"
4) "24"

所有我说的是,你可以把任何号码,你在关键需要再找到它们值的两个步骤来做到。 但考虑到它不是把里面所有的关键值只是把你需要做的过滤那些个好主意。 干杯:)



文章来源: How to search in redis for hash keys?
标签: redis