모듈: Mongo::QueryCache
- 다음에 정의됨:
- lib/ Mongo/query_cache.rb
네임스페이스 아래에 정의됨
클래스: 미들웨어
클래스 메서드 요약 접기
-
.캐시 ⇒ 객체
쿼리 캐시 를 사용하면서 차단 을 실행합니다.
-
.clear ⇒ nil
쿼리 캐시를 지웁니다.
-
.clear_namespace(네임스페이스) ⇒ nil
비공개
커서를 저장하는 쿼리 캐시 섹션을 이 네임스페이스의 결과로 지웁니다.
-
.enabled=(value) ⇒ 객체
캐시 활성화 여부를 설정합니다.
-
.활성화? ⇒ 참, 거짓
현재 스레드에서 쿼리 캐시가 활성화되어 있나요?
-
.get(**opts) ⇒ Mongo::CashingCursor | nil
비공개
지정된 쿼리 옵션에 대해 캐시에 있는 경우 올바른 쿼리 결과를 얻는 데 사용할 수 있는 캐시된 커서를 검색합니다.
- .normalized_limit(limit) ⇒ 객체
-
.set(커서, **opts) ⇒ true
비공개
지정된 쿼리 옵션과 연결된 쿼리 캐시 에 CachingCursor 인스턴스 를 저장합니다.
-
.캐시되지 않은 ⇒ 객체
쿼리 캐시를 비활성화한 상태에서 블록을 실행합니다.
클래스 메서드 세부 정보
.캐시 ⇒ 객체
쿼리 캐시 를 사용하면서 차단 을 실행합니다.
46 47 48 49 50 51 52 53 54 |
# 파일 'lib/ Mongo/query_cache.rb', 줄 46 def 캐시 활성화됨 = 활성화? self.활성화됨 = true 시작 yield 보장 self.활성화됨 = 활성화됨 end end |
.clear ⇒ nil
쿼리 캐시를 지웁니다.
88 89 90 |
# 파일 'lib/ Mongo/query_cache.rb', 줄 88 def 지우기 스레드.Current['[Mongo]:query_cache'] = nil end |
.clear_namespace(네임스페이스) ⇒ nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
커서를 저장하는 쿼리 캐시 섹션을 이 네임스페이스의 결과로 지웁니다.
101 102 103 104 105 106 107 108 |
# 파일 'lib/ Mongo/query_cache.rb', 줄 101 def clear_namespace(namespace) cache_table.삭제(namespace) # nil 키는 잠재적으로 읽을 수 있는 커서가 저장되는 위치입니다. # 여러 컬렉션. 이 키는 모든 쓰기 (write) 작업에서 지워야 합니다. # 오래된 데이터 반환을 방지합니다. cache_table.삭제(nil) nil end |
.enabled=(value) ⇒ 객체
캐시 활성화 여부를 설정합니다.
26 27 28 |
# 파일 'lib/ Mongo/query_cache.rb', 줄 26 def enabled=(value) 스레드.Current['[Mongo]:query_cache:enabled'] = value end |
.활성화? ⇒ true, false
현재 스레드에서 쿼리 캐시가 활성화되어 있나요?
36 37 38 |
# 파일 'lib/ Mongo/query_cache.rb', 줄 36 def 활성화? !!스레드.Current['[Mongo]:query_cache:enabled'] end |
.get(**opts) ⇒ Mongo::CashingCursor | nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
지정된 쿼리 옵션에 대해 캐시에 있는 경우 올바른 쿼리 결과를 얻는 데 사용할 수 있는 캐시된 커서를 검색합니다.
179 180 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 |
# 파일 'lib/ Mongo/query_cache.rb', 줄 179 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을 반환합니다. # 쿼리. 반환 하지 않는 한 cache_cursor_limit.nil? || (limit && cache_cursor_limit >= limit) caching_cursor end |
.normalized_limit(limit) ⇒ 객체
207 208 209 210 211 212 213 214 |
# 파일 'lib/ Mongo/query_cache.rb', 줄 207 def normalized_limit(limit) 반환 nil 하지 않는 한 limit # 캐싱을 위해 0 의 제한은 mongo 가 이를 제한 없이 처리하므로 제한이 없음을 의미합니다. 반환 nil 만약 limit == 0 # 캐싱을 위해 음수 한도는 양수 한도와 동일합니다. limit.abs end |
.설정하다(커서, **opts) ⇒ true
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
지정된 쿼리 옵션과 연결된 쿼리 캐시 에 CachingCursor 인스턴스 를 저장합니다.
140 141 142 143 144 145 146 147 148 |
# 파일 'lib/ Mongo/query_cache.rb', 줄 140 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 |
.캐시되지 않은 ⇒ 객체
쿼리 캐시를 비활성화한 상태에서 블록을 실행합니다.
62 63 64 65 66 67 68 69 70 |
# 파일 'lib/ Mongo/query_cache.rb', 줄 62 def 캐시되지 않은 활성화됨 = 활성화? self.활성화됨 = 거짓 시작 yield 보장 self.활성화됨 = 활성화됨 end end |