39

次のようなユーザーの詳細を保存するためにハッシュキーを使用しています。

 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 = 25ますname = lee。特定のフィールドで指定された値を検索するにはどうすればよいですか?

4

2 に答える 2

67

それはいけません。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
于 2012-07-13T13:14:47.490 に答える