QueryCache — Documentation by YARD 0.9.37 (original) (raw)

Module: Mongo::QueryCache

Defined in:

lib/mongo/query_cache.rb

Defined Under Namespace

Classes: Middleware

Class Method Summarycollapse

Class Method Details

.cache ⇒ Object

Execute the block while using the query cache.

48 49 50 51 52 53 54 55 56 # File 'lib/mongo/query_cache.rb', line 48 def cache enabled = enabled? self.enabled = true begin yield ensure self.enabled = enabled end end

.clear ⇒ nil

90 91 92 # File 'lib/mongo/query_cache.rb', line 90 def clear Thread.current["[mongo]:query_cache"] = nil end

.clear_namespace(namespace) ⇒ nil

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Clear the section of the query cache storing cursors with results from this namespace.

103 104 105 106 107 108 109 110 # File 'lib/mongo/query_cache.rb', line 103 def clear_namespace(namespace) cache_table.delete(namespace) cache_table.delete(nil) nil end

.enabled=(value) ⇒ Object

Set whether the cache is enabled.

28 29 30 # File 'lib/mongo/query_cache.rb', line 28 def enabled=(value) Thread.current["[mongo]:query_cache:enabled"] = value end

.enabled? ⇒ true, false

Is the query cache enabled on the current thread?

38 39 40 # File 'lib/mongo/query_cache.rb', line 38 def enabled? !!Thread.current["[mongo]:query_cache:enabled"] end

.get(**opts) ⇒ Mongo::CachingCursor | nil

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

For the given query options, retrieve a cached cursor that can be used to obtain the correct query results, if one exists in the cache.

| 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 | # File 'lib/mongo/query_cache.rb', line 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] return nil unless namespace_hash caching_cursor = namespace_hash[_cache_key] return nil unless caching_cursor caching_cursor_limit = normalized_limit(caching_cursor.view.limit) if limit && (caching_cursor_limit.nil? || caching_cursor_limit >= limit) caching_cursor elsif limit.nil? && caching_cursor_limit.nil? caching_cursor else nil end end | | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

.normalized_limit(limit) ⇒ Object

213 214 215 216 217 218 219 # File 'lib/mongo/query_cache.rb', line 213 def normalized_limit(limit) return nil unless limit return nil if limit == 0 limit.abs end

.set(cursor, **opts) ⇒ true

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Store a CachingCursor instance in the query cache associated with the specified query options.

| 142 143 144 145 146 147 148 149 150 | # File 'lib/mongo/query_cache.rb', line 142 def set(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 | | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

.uncached ⇒ Object

Execute the block with the query cache disabled.

64 65 66 67 68 69 70 71 72 # File 'lib/mongo/query_cache.rb', line 64 def uncached enabled = enabled? self.enabled = false begin yield ensure self.enabled = enabled end end