Module: Mongo::QueryCache

定義:
build/ruby-Driver-v 2.19 /lib/mongo/query_cache.rb

名前空間で定義済み

クラス: ミドルウェア

クラスメソッドの概要を折りたたむ

クラスメソッドの詳細

キャッシュ=オブジェクト

クエリ キャッシュを使用しながらブロックを実行します。

例:

キャッシュを使用して を実行します。

QueryCache.cache { collection.find }

次の値を返します。

  • オブジェクト

    ブロックの結果。



48
49
50
51
52
53
54
55
56
ファイル ' build/ruby-Driver-v 2.19 /lib/mongo/query_cache.rb ', 行48

デフォルト cache
  enabled = 有効か
  自己.enabled = true
  begin
    ノードの数
  保証する
    自己.enabled = enabled
  end
end

クリア= nil

クエリ キャッシュをクリアします。

例:

キャッシュをクリアします。

QueryCache.clear

次の値を返します。

  • (nil)

    常に nil です。



90
91
92
ファイル ' build/ruby-Driver-v 2.19 /lib/mongo/query_cache.rb ', 行90

デフォルト クリア
  スレッド.Current[" [mongo]:query_cache "] = nil
end

clear_namespace (名前空間) = nil

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

この名前空間からの結果を持つカーソルを保存しているクエリ キャッシュの セクションをクリアします。

パラメーター:

  • namespace ( string )

    クリアする名前空間(形式は database.collection)。

次の値を返します。

  • (nil)

    常に nil です。



103
104
105
106
107
108
109
110
ファイル ' build/ruby-Driver-v 2.19 /lib/mongo/query_cache.rb ', 行103

デフォルト clear_namespace(namespace)
  cache_table.削除(namespace)
  # nil キーは、から読み取れた可能性のあるカーソルが保存されている場所です
  複数のコレクション このキーは、書き込み操作ごとにクリアする必要があります。
  古いデータが返されないようにするには、 を使用します。
  cache_table.削除(nil)
  nil
end

enabled= (値) =オブジェクト

キャッシュを有効にするかどうかを設定します。

例:

キャッシュが有効になっている場合は、 に設定します。

QueryCache.enabled = true

パラメーター:

  • 価値 truefalse

    有効な値。



28
29
30
ファイル ' build/ruby-Driver-v 2.19 /lib/mongo/query_cache.rb ', 行28

デフォルト enabled(価値)
  スレッド.Current[" [mongo]:query_cache:enabled "] = 価値
end

有効か = truefalse

現在のスレッドでクエリ キャッシュは有効になっていますか。

例:

クエリ キャッシュは有効になっていますか。

QueryCache.enabled?

次の値を返します。

  • truefalse

    キャッシュが有効になっている場合。



38
39
40
ファイル ' build/ruby-Driver-v 2.19 /lib/mongo/query_cache.rb ', 行38

デフォルト 有効か
  !!スレッド.Current[" [mongo]:query_cache:enabled "]
end

get (**opts) = Mongo::CagingCursor | nil

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

指定されたクエリ オプションに対して、正しいクエリ結果を取得するために使用できるキャッシュされたカーソルを検索します(キャッシュに存在する場合)。

パラメーター:

  • ops ハッシュ

    カスタマイズ可能なオプションのセット

オプション ハッシュ( * Ops ):

  • :namespace string | nil

    クエリの名前空間(形式は database_name.collection_name)。

  • : セレクター 配列ハッシュ

    クエリに渡される セレクター 。 ほとんどのクエリでは、これはハッシュになりますが、集計の場合は、集計パイプラインを表す配列になります。 NULLではない。

  • :skip (Integer | nil)

    クエリのスキップ値。

  • :sort ハッシュ | nil

    クエリ結果の順序(例: { name: -1 } )。

  • :limit (Integer | nil)

    クエリの制限値。

  • :プロジェクション ハッシュ | nil

    クエリ結果のプロジェクション(例: { name: 1 })。

  • :collation ハッシュ | nil

    クエリの照合(例: { locale" => fr_CA" })

  • :read_concern ハッシュ | nil

    クエリの読み取り保証(例: { レベル: :majority })。

  • :read_preference ハッシュ | nil

    クエリの読み込み設定(例: { モード: : セカンダリ })。

  • :multi_collection (Boolean | nil)

    クエリ結果が複数のコレクションから取得される可能性があるかどうか。 true の場合、これらの結果は nil 名前空間キーの下に保存され、すべての書き込みコマンドでクリアされます。

次の値を返します。

  • Mongo::キャッシュCursor | nil

    クエリ キャッシュに存在する場合はそれを返し、そうでない場合は nil を返します。



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-v 2.19 /lib/mongo/query_cache.rb ', 行181

デフォルト 得る(**ops)
  limit = Normalized_limit(ops[:limit])

  _namespace_key = namespace_key(**ops)
  _cache_key = cache_key(**ops)

  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)

  #キャッシュ カーソルが次の条件を満たす可能性があるシナリオが 2 つあります:
  # query:
  # 1 。 クエリには制限があり、保存されたカーソルには制限がない場合、 または
  # より大きな制限があります。
  # 2 。 クエリには制限はなく、保存済みカーソルにも制限はありません。
  #
  それ以外の場合は、保存されたカーソルが を満たさないため nil を返します。
  # クエリを実行します。

  場合 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 (制限) =オブジェクト



213
214
215
216
217
218
219
ファイル ' build/ruby-Driver-v 2.19 /lib/mongo/query_cache.rb ', 行213

デフォルト Normalized_limit(limit)
  return nil ただし、 limit
  # キャッシュの目的では、 0の制限は制限なしを意味します。これは mongo がそのように扱うためです。
  return nil 場合 limit == 0
  # キャッシュの目的では、負の制限は正の制限と同じです。
  limit.abs
end

set (カーソル、++ops)= true

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

指定されたクエリ オプションに関連付けられたクエリ キャッシュに CacheCursor インスタンスを保存します。

パラメーター:

  • cursor Mongo::キャッシュCursor

    保存する CacheCursor インスタンス。

  • ops ハッシュ

    カスタマイズ可能なオプションのセット

オプション ハッシュ( * Ops ):

  • :namespace string | nil

    クエリの名前空間(形式は database_name.collection_name)。

  • : セレクター 配列ハッシュ

    クエリに渡される セレクター 。 ほとんどのクエリでは、これはハッシュになりますが、集計の場合は、集計パイプラインを表す配列になります。 NULLではない。

  • :skip (Integer | nil)

    クエリのスキップ値。

  • :sort ハッシュ | nil

    クエリ結果の順序(例: { name: -1 } )。

  • :limit (Integer | nil)

    クエリの制限値。

  • :プロジェクション ハッシュ | nil

    クエリ結果のプロジェクション(例: { name: 1 })。

  • :collation ハッシュ | nil

    クエリの照合(例: { locale" => fr_CA" })

  • :read_concern ハッシュ | nil

    クエリの読み取り保証(例: { レベル: :majority })。

  • :read_preference ハッシュ | nil

    クエリの読み込み設定(例: { モード: : セカンダリ })。

  • :multi_collection (Boolean | nil)

    クエリ結果が複数のコレクションから取得される可能性があるかどうか。 true の場合、これらの結果は nil 名前空間キーの下に保存され、すべての書き込みコマンドでクリアされます。

次の値を返します。

  • ( true )

    常に true



142
143
144
145
146
147
148
149
150
ファイル ' build/ruby-Driver-v 2.19 /lib/mongo/query_cache.rb ', 行142

デフォルト セット(cursor, **ops)
  _cache_key = cache_key(**ops)
  _namespace_key = namespace_key(**ops)

  cache_table[_namespace_key] ||= {}
  cache_table[_namespace_key][_cache_key] = cursor

  true
end

非キャッシュ 詳しくは、オブジェクト

クエリ キャッシュを無効にしてブロックを実行します。

例:

キャッシュなしで を実行します。

QueryCache.uncached { collection.find }

次の値を返します。

  • オブジェクト

    ブロックの結果。



64
65
66
67
68
69
70
71
72
ファイル ' build/ruby-Driver-v 2.19 /lib/mongo/query_cache.rb ', 行64

デフォルト 非キャッシュ
  enabled = 有効か
  自己.enabled = false
  begin
    ノードの数
  保証する
    自己.enabled = enabled
  end
end