모듈: Mongo::QueryCache
- 다음에 정의됨:
- build/ruby-driver-v2.19/lib/mongo/query_cache.rb
네임스페이스 아래에 정의됨
클래스: 미들웨어
클래스 메서드 요약 접기
-
.캐시 ⇒ 객체
쿼리 캐시 를 사용하면서 차단 을 실행합니다.
-
.clear ⇒ nil
쿼리 캐시를 지웁니다.
-
.clear_namespace(네임스페이스) ⇒ nil
비공개
커서를 저장하는 쿼리 캐시 섹션을 이 네임스페이스의 결과로 지웁니다.
-
.enabled=(value) ⇒ 객체
캐시 활성화 여부를 설정합니다.
-
.활성화? ⇒ 참, 거짓
현재 스레드에서 쿼리 캐시가 활성화되어 있나요?
-
.get(**opts) ⇒ Mongo::CashingCursor | nil
비공개
지정된 쿼리 옵션에 대해 캐시에 있는 경우 올바른 쿼리 결과를 얻는 데 사용할 수 있는 캐시된 커서를 검색합니다.
- .normalized_limit(limit) ⇒ 객체
-
.set(커서, **opts) ⇒ true
비공개
지정된 쿼리 옵션과 연결된 쿼리 캐시 에 CachingCursor 인스턴스 를 저장합니다.
-
.캐시되지 않은 ⇒ 객체
쿼리 캐시를 비활성화한 상태에서 블록을 실행합니다.
클래스 메서드 세부 정보
.캐시 ⇒ 객체
쿼리 캐시 를 사용하면서 차단 을 실행합니다.
48 49 50 51 52 53 54 55 56 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', 줄 48 def 캐시 활성화됨 = 활성화? self.활성화됨 = true 시작 yield 보장 self.활성화됨 = 활성화됨 end end |
.clear ⇒ nil
쿼리 캐시를 지웁니다.
90 91 92 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', 줄 90 def 지우기 스레드.Current["[mongo]:query_cache"] = nil end |
.clear_namespace(네임스페이스) ⇒ nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
커서를 저장하는 쿼리 캐시 섹션을 이 네임스페이스의 결과로 지웁니다.
103 104 105 106 107 108 109 110 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', 줄 103 def clear_namespace(namespace) cache_table.삭제(namespace) # nil 키는 잠재적으로 읽을 수 있는 커서가 저장되는 위치입니다. # 여러 컬렉션. 이 키는 모든 쓰기 (write) 작업에서 지워야 합니다. # 오래된 데이터 반환을 방지합니다. cache_table.삭제(nil) nil end |
.enabled=(value) ⇒ 객체
캐시 활성화 여부를 설정합니다.
28 29 30 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', 줄 28 def enabled=(value) 스레드.Current["[mongo]:query_cache:enabled"] = value end |
.활성화? ⇒ true, false
현재 스레드에서 쿼리 캐시가 활성화되어 있나요?
38 39 40 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', 줄 38 def 활성화? !!스레드.Current["[mongo]:query_cache:enabled"] end |
.get(**opts) ⇒ Mongo::CashingCursor | nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
지정된 쿼리 옵션에 대해 캐시에 있는 경우 올바른 쿼리 결과를 얻는 데 사용할 수 있는 캐시된 커서를 검색합니다.
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', 줄 181 def get(**opts) limit = normalized_limit(opts[:limit]) _namespace_key = namespace_key(**opts) _cache_key = cache_key(**opts) namespace_hash = cache_table[_namespace_key] 반환 nil 하지 않는 한 namespace_hash caching_cursor = namespace_hash[_cache_key] 반환 nil 하지 않는 한 caching_cursor cache_cursor_limit = normalized_limit(caching_cursor.보기.limit) # 캐싱 커서가 다음 작업을 수행할 수 있는 두 가지 시나리오가 있습니다. # query: # 1. 쿼리에 제한이 있고 저장된 커서에 제한이 없거나 # 제한이 커집니다. # 2. 쿼리 에는 제한이 없으며 저장된 커서 에는 제한이 없습니다. # # 그렇지 않으면 저장된 커서가 다음을 충족하지 않으므로 nil을 반환합니다. # 쿼리. 만약 limit && (cache_cursor_limit.nil? || cache_cursor_limit >= limit) caching_cursor elsif limit.nil? && cache_cursor_limit.nil? caching_cursor other nil end end |
.normalized_limit(limit) ⇒ 객체
213 214 215 216 217 218 219 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', 줄 213 def normalized_limit(limit) 반환 nil 하지 않는 한 limit # 캐싱을 위해 0 의 제한은 mongo 가 이를 제한 없이 처리하므로 제한이 없음을 의미합니다. 반환 nil 만약 limit == 0 # 캐싱을 위해 음수 한도는 양수 한도와 동일합니다. limit.abs end |
.설정하다(커서, **opts) ⇒ true
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
지정된 쿼리 옵션과 연결된 쿼리 캐시 에 CachingCursor 인스턴스 를 저장합니다.
142 143 144 145 146 147 148 149 150 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', 줄 142 def 세트(cursor, **opts) _cache_key = cache_key(**opts) _namespace_key = namespace_key(**opts) cache_table[_namespace_key] ||= {} cache_table[_namespace_key][_cache_key] = cursor true end |
.캐시되지 않은 ⇒ 객체
쿼리 캐시를 비활성화한 상태에서 블록을 실행합니다.
64 65 66 67 68 69 70 71 72 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/query_cache.rb', 줄 64 def 캐시되지 않은 활성화됨 = 활성화? self.활성화됨 = 거짓 시작 yield 보장 self.활성화됨 = 활성화됨 end end |