我是新手刚想学redis,但是看了很多资料都在说redis怎么快怎么快,很少说具体怎么应用到项目上的,就算有也是做队列或是缓存用。看了看redis入门资料也说redis只支持k->v类型的数据保存且没有条件查询,那如果遇到条件查询了怎么办呢?如保存了一些对象:a{name:lijiang age:60 } 请问怎么查询所有姓li的用户或所有年龄是60的用户呢?
高洛峰2017-04-21 11:18:04
서두르면 대가가 따릅니다. redis는 비관계형 데이터베이스입니다. 조건에 따라 쿼리하려면 데이터에 대한 인덱스를 수동으로 생성해야 합니다.
해시셋을 사용하여 개체를 저장할 수 있습니다. 해시세트 키가 'user:name' 형식이라고 가정합니다.
조건부 쿼리는 정렬된 집합을 사용할 수 있습니다. key는 객체의 필드입니다. 이름을 검색할 때 zRangeByLex 명령을 사용할 수 있습니다:
이후 user:lijiang 및 user:likui를 사용하여 관련 정보를 얻을 수 있습니다.
이름이 li로 시작하는 사람을 찾으려면 '[li (lj')를 사용하여 반 개방 범위 [li..., lj)에서 문자열을 찾을 수 있습니다. redis가 문자열과 해당 접두사를 비교할 때 긴 것이 더 큽니다(예: liA > li, liABCDEF... < lj).
(참고: zRangeByLex에는 redis 버전 >2.8.9가 필요합니다.)
조건부로 연령을 검색하려면 정렬된 세트의 zRangeByScore 명령을 사용할 수 있습니다.
으아악zRangeByScore의 세 가지 매개변수는 키, 최소, 최대(닫힌 간격)입니다.
참조: http://redis.io/commands/