数据库 - 请问redis遇到条件查询怎么办呢?
巴扎黑
巴扎黑 2017-04-21 11:16:04
0
1
741

我是新手刚想学redis,但是看了很多资料都在说redis怎么快怎么快,很少说具体怎么应用到项目上的,就算有也是做队列或是缓存用。看了看redis入门资料也说redis只支持k->v类型的数据保存且没有条件查询,那如果遇到条件查询了怎么办呢?如保存了一些对象:a{name:lijiang age:60 } 请问怎么查询所有姓li的用户或所有年龄是60的用户呢?

巴扎黑
巴扎黑

모든 응답(1)
小葫芦

서두르면 대가가 따릅니다. 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/

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿