How to search in redis for hash keys?

后端 未结 2 1910
终归单人心
终归单人心 2021-01-30 20:56

I\'m using hash keys to store user details like:

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


        
2条回答
  •  生来不讨喜
    2021-01-30 21:52

    You cannot. Redis is a key-value store, not a relational database.

    In order to search for a specific data, you need to build an access path to this data. For instance, to get the users having age = 25, you need to build an index to map the age values to users. It can be done with a set. This is the same for the name.

    Once you have sets for age and name, you can search users by intersecting the sets. For example:

    # 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
    

提交回复
热议问题