2017-10-31 5 views
0

下記のGoogle Apps Scriptコードを使用しています。スクリプトはエラーなしで実行されました。しかし、私はいくつかのエントリが見つからないことを発見しました。データはクリーンアップされているため、制御文字を持つエントリはありません。 putAllメソッドによって設定されたCacheオブジェクトのサイズ制限はありますか。私は個々のputメソッドを実行すれば正常に動作します。しかし、それはあまりにも長くかかる。 putAllを使うのは1〜2分しかかかりません。私はこの問題を理解するために何日も過ごしました。私は100%肯定的です。データに何も問題はありません。 THANKSGoogle Appsサービス - キャッシュサービスの不足のエントリ

//my data file looks like below with 180K entries. 
//Each line is terminated with \n 
//{ 
// "0000000001": "Seattle", 
// "0000000002": "Portland", 
// "0000000006": "Tukwila", 
// "0000000008": "Kirkland", 
// .... 
// } 

var jsonString = DriveApp.getFileById("xxxxxx....xxx").getAs(MimeType.PLAIN_TEXT).getDataAsString(); 

var jsonObject = eval("(" + jsonString +")"); 

vendorCache.putAll(jsonObject, 21600); // 21600 cache it for 6 hours 
+0

キャッシュに入れられない場合がありますか?彼らはいつも同じものですか?ちょうどそれらを入れようとするとどうなりますか? –

+0

以下は、私が気づいた1つのレコードです。一貫してputAll: "0000000170": "E Canada Dry DO NOT USE"、putメソッドの問題はありません。ファイルの101番目のレコードです。私が行数を172560件に減らした場合、私はその記録を見る。しかし、私がファイル全体を行うと、178Kかそれでは101番目のレコードが消えます。ファイル全体をロードする際にエラーは発生しません。 –

+0

私はより多くのテストを行い、キャッシュが失われ始めた時点までファイルを取得しました。私は最後の入力テキストcharをcharで切り捨てました。ファイルサイズは6149564バイトです。それは約6MBです。そのため、putAllメソッドのハードコーディングされた制限がある必要があります。私はキャッシュのサイズの制限とは思わない。誰かがputAllメソッドでコードを見てみることができますか?ありがとう –

答えて

0

しかし、私は、ファイル全体行う場合 - 178Kのかそこら101thレコードが消えます。

のputAll方法は100キロバイトの制限を有することputAll(values)状態を見てこれが起こってもよい。

のputAll(値)

キーの最大長は250個の文字です。キーごとに格納できるデータの最大量は で、100KBです。値は600秒(10分)後にキャッシュ から期限切れになります。

+0

あなたのステートメントは、各キーのキーとデータに適しています。それは私の問題ではない。私の鍵は10文字であり、鍵に関連するデータは100KB未満です。私が以前に言ったように、ファイルの合計サイズが約6 MBである〜150,0000以上のエントリを追加することができました。したがって、putAllメソッドを見ると、オブジェクトとキャッシュの期間が必要です。私は、オブジェクトのサイズには限界があると思うが、リファレンスのドキュメントはそれを私たちに教えてくれません。だから、GoogleチームにputAllメソッドの実装をチェックし、コードにハード制限があるかどうかを確認するように依頼していた –

関連する問題