模块:Mongo::QueryCache
- 定义于:
- build/Ruby-driver-v 2.19 /lib/mongo/query_cache.rb
在命名空间下定义
类: 中间件
类方法摘要折叠
-
。缓存⇒ 对象
在使用查询缓存时执行区块。
-
。 clear ⇒ nil
清除查询缓存。
-
。 clear_namespace (namespace) ⇒ nil
private
清除查询缓存中存储游标和来自此命名空间的结果的部分。
-
。 enabled= (value) ⇒ 对象
设置是否启用缓存。
-
。已启用? ⇒ true, false
当前线程是否启用了查询缓存?
-
。 get (**opts) ⇒ Mongo::CachingCursor | Mongo::CachingCursor nil
private
对于给定的查询选项,检索可用于获取正确查询结果的缓存游标(如果缓存中存在游标)。
- 。 normalized_limit (limit) ⇒ 对象
-
。 set (cursor, **opts) ⇒ true
private
将 CachingCursor实例存储在与指定查询选项关联的查询缓存中。
-
。未缓存⇒ 对象
在禁用查询缓存的情况下执行区块。
类方法详细信息
。缓存⇒对象
在使用查询缓存时执行区块。
48 49 50 51 52 53 54 55 56 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/query_cache.rb', 第48行 def 缓存 enabled = 已启用? self.enabled = true 开始 产量 确保 self.enabled = enabled end end |
。 clear ⇒ nil
清除查询缓存。
90 91 92 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/query_cache.rb', 第90行 def 清除 线程.Current[" [mongo]:query_cache "] = nil end |
。 clear_namespace (namespace) ⇒ nil
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
清除查询缓存中存储游标和来自此命名空间的结果的部分。
103 104 105 106 107 108 109 110 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/query_cache.rb', 第103行 def clear_namespace(namespace) cache_table.删除(namespace) # nil 键是存储游标的位置,这些游标可能会读取 # 多个集合。 每次写入操作都应清除该键 # 以防止返回过时的数据。 cache_table.删除(nil) nil end |
。 enabled= (value) ⇒对象
设置是否启用缓存。
28 29 30 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/query_cache.rb', 第28行 def enabled=(值) 线程.Current[" [mongo]:query_cache:enabled "] = 值 end |
。已启用? ⇒ true , false
当前线程是否启用了查询缓存?
38 39 40 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/query_cache.rb', 第38行 def 已启用? !!线程.Current[" [mongo]:query_cache:enabled "] end |
。 get (**opts) ⇒ Mongo::CachingCursor | Mongo::CachingCursor 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 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/query_cache.rb', 第181行 def 获取(**opts) limit = normalized_limit(opts[:limit]) _namespace_key = namespace_key(**opts) _cache_key = cache_key(**opts) namespace_hash = cache_table[_namespace_key] return nil 除非 namespace_hash caching_cursor = namespace_hash[_cache_key] return nil 除非 caching_cursor caching_cursor_limit = normalized_limit(caching_cursor.查看.limit) # 缓存游标在两种情况下可以满足 # query: # 1 . 查询有限制,存储的游标没有限制或 # 更大的限制。 # 2 . 查询没有限制,存储的游标也没有限制。 # # 否则,返回 nil,因为存储的游标不满足 # 查询。 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) ⇒对象
213 214 215 216 217 218 219 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/query_cache.rb', 第213行 def normalized_limit(limit) return nil 除非 limit # 出于缓存目的,限制为 0 意味着没有限制,因为mongo也是如此对待的。 return nil if limit == 0 # 就缓存而言,负限值与正限值相同。 limit.abs end |
。 设立 (游标, **opts) ⇒ true
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
将 CachingCursor实例存储在与指定查询选项关联的查询缓存中。
142 143 144 145 146 147 148 149 150 |
# File 'build/Ruby-driver-v 2.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 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/query_cache.rb', 第64行 def 未缓存 enabled = 已启用? self.enabled = false 开始 产量 确保 self.enabled = enabled end end |