About schema design of NoSQL DB.(How to query multiple data?)
I can save all user_id under a key 'New York', but that's ugly isn't it.


No, it isn't ugly and it's very much what any RDBMS does when it maintains an index. The difference with Redis is that it doesn't do that for you so you'll have to do these keys' management in the code.


  But, what should I do if want to get all user younger than 20, or all user live in New York?


Consider using Redis' Sets and Sorted Sets for storing these attributes. Redis provides several set operations (union, intersect...) that make building these conditions easier.


  Is there have some amazing way to do that with Redis?​


That's pretty much it. It's always about a trade off - choose a full-fledged RDBMS for the comfort and you'll pay with performance, with Redis it's the other way around :) That said, it's not that bad once you "repress" some of your currently-dominant relational database instincts.

Another viable approach that may fit your requirements is to use an object mapper to abstract some of the underlying Redis details. Depending on your choice of programming language, there are quite a few out that do a lot of the work for you (at the expense of a little performance of course ;)).