이 문서에서는 Redis가 관계형 데이터를 저장하는 방법과 일치, 범위 및 퍼지 쿼리를 사용하는 방법을 예제와 함께 설명합니다.
1. 관계형 데이터 저장
Staff 개체를 예로 들어 보겠습니다. 관계형 데이터베이스 또는 GridGain과 같은 메모리 그리드 제품(하단 레이어는 H2 데이터베이스의 메모리 모드 저장소를 사용함)에 개체 데이터를 저장합니다. 테이블 형태. 메모리 그리드는 객체를 기준으로 캐시되기 때문에 직렬화된 바이너리나 JSON 형식 등 전체 객체의 인코딩을 저장하기 위한 추가 열(Staff 열)이 필요하므로 이를 애플리케이션에 직접 반환할 수 있습니다. 역직렬화.
Redis에서는 id를 고유 식별자로 사용하고 키-값, 해시, zSet의 세 가지 데이터 구조를 사용하여 저장할 수 있습니다. Key-value는 id와 전체 객체를 저장하는 것이며, id 범위를 결정한 후 이를 기반으로 객체를 클라이언트에 반환할 수 있습니다.
2. 일치 쿼리
해시 테이블의 hget 또는 hmget을 사용하면 dept='IT' 또는 dept in ('IT', 'QA')와 같은 단일 값 또는 다중 값 일치 쿼리를 구현할 수 있습니다. . ID 목록을 가져온 후 키-값을 쿼리하여 객체를 가져옵니다.
3. Range query
age를 zSet의 점수로 저장하고 그 값이 id이기 때문에 zSet의 zrangeByScore 메소드를 사용하면 일정 간격 내에서 점수의 값을 얻을 수 있습니다.
4. 퍼지 쿼리
Redis 2.8.9 이후 zSet에는 매우 유용한 방법인 zrangeByLex가 추가되었습니다. 점수를 0으로 저장하고 값은 zrangeByLex를 사용하여 얻을 수 있습니다. 특정 범위 내의 문자. 예를 들어, zrangeByLex 이름 [A, (F, Allen, Aaron, Carter를 쿼리할 수 있습니다.
5. Paging 쿼리
동시에 zrangeByLex는 start, offset과 유사한 구문으로 페이징 쿼리도 지원합니다.
6. 제한 사항
위의 예는 Redis에서 몇 가지 일반적인 쿼리가 어떻게 구현되는지 보여 주지만 결국 Redis는 키-값 저장소일 뿐이므로 많은 제한 사항이 있습니다.
예:
1) 불가능합니다. age>25 AND 'A%'와 같은 이름과 같은 여러 조건을 사용하여 쿼리를 구현하려면 여러 명령이 필요하고 합집합이나 교차점을 계산해야 합니다.
2) 중국어 퍼지 쿼리는 더 어렵습니다.
더 많은 Redis 지식을 알고 싶다면 redis 입문 튜토리얼 칼럼을 주목해 주세요.
위 내용은 Redis의 관계형 쿼리 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!