>  기사  >  데이터 베이스  >  Redis가 페이징 쿼리를 해결하는 방법

Redis가 페이징 쿼리를 해결하는 방법

(*-*)浩
(*-*)浩원래의
2019-11-27 10:11:376555검색

쿼리 결과를 캐싱하면 시스템의 서비스 기능이 크게 향상되고 기본 서비스나 데이터베이스에 대한 부담을 줄일 수 있다는 것은 모두 알고 있습니다. 페이징 조건을 사용한 캐싱의 경우 다양한 페이징 조건에 따라 여러 키를 캐시할 수도 있습니다.

Redis가 페이징 쿼리를 해결하는 방법

SortedSet을 기반으로 한 페이징 쿼리 캐싱 솔루션

가장 먼저 떠오르는 솔루션은 페이징 조건에 따라 여러 키를 사용하는 대신 @see ListOperationsb56561a2c0bc639cf0044c0859afb88f 페이징은 모든 데이터를 Redis에 캐시한 다음 범위(키, 시작, 제한)를 사용하여 페이징 조건에 따라 페이징 결과를 얻습니다. (추천 학습: Redis 동영상 튜토리얼)

캐시가 실패하면 동시 쓰기 캐시로 인해 데이터가 중복되므로 문제가 발생합니다. 그래서 동시성 중에 중복 데이터를 처리하기 위해 set을 사용하려고 생각했습니다. @see ZSetOperations< ;K, V>

코드 로직은 다음과 같습니다.

range(key,start,limit)按照分页条件获取缓存,命中则直接返回
缓存未命中,查询(没有分页条件)数据库或是调用(没有分页)底层接口
add(key,valueScoreMap<value,score>)写入缓存,expire设置缓存时间
当需要清理缓存时,直接删除key,如果是因为数据新增和删除,可以add(key,value,score)或remove(key,value)

redis는 맵의 데이터를 점수 점수에 따라 오름차순으로 정렬합니다. 일반적으로 점수 점수는 fileA의 값을 순서대로 나타냅니다. sql 문의 fileA를 사용하면 데이터 일관성을 보장할 수 있습니다

그러나 이 방법에도 몇 가지 문제가 있습니다.

이 키 캐시의 값은 실제로 핫 데이터이지만 일부 데이터만 자주 사용될 수 있으며 나머지는 데이터 등 전혀 사용되지 않습니다. 100개의 페이지가 있지만 실제로는 처음 10페이지만 사용할 수 있으며 이로 인해 캐시 공간이 낭비될 수도 있습니다. Redis 가상 메모리를 사용하는 경우에도 일정한 영향을 미칩니다. . SQL 쿼리가 원래 페이징 쿼리에서 비페이징 쿼리로 변경되었습니다. 캐시가 무효화되면 특히 대규모 테이블의 경우 시스템 처리 능력이 이전에 비해 감소합니다.

더 많은 Redis 관련 기술 기사를 확인하세요.

Redis 시작하기 튜토리얼

칼럼을 방문하여 자세히 알아보세요!

위 내용은 Redis가 페이징 쿼리를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.